Итак, у меня есть приложение Flask, работающее внутри контейнера docker, и я могу получить к нему доступ вне контейнера на локальном компьютере без каких-либо проблем. Он прослушивает 0.0.0.0:5000
внутри контейнера, и я обращаюсь к нему с помощью localhost: 5000 в моем браузере. Однако теперь я хочу получить доступ к приложению вне моей машины, и оно не работает. Вот как я пытаюсь получить доступ к приложению:
Machine 1 --> Machine2[Docker container]
Так что оно работает, когда я пытаюсь с Machine2, но когда я пытаюсь с Machine 1 (Machine2IP: 5000) Flask (Gunicorn) регистрируется это:
[8] [DEBUG] Ignoring connection reset
Получается запрос, что хорошо, но я не уверен, в чем проблема ... Вот конфигурация docker, которую я использую для запуска контейнера
version: '3'
services:
docker-viewer-app:
restart: always
image: registry/myimage
ports:
- "5000:5000"
docker -создать вывод ps:
docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------------
docker_my-app_1 gunicorn --config gunicorn ... Up 0.0.0.0:5000->5000/tcp
Редактировать: Предоставляя здесь весь вывод контейнера docker, последние 3 строки - это фактически мои 3 попытки доступа к приложению.
my-app_1 | [2020-02-12 12:25:59 +0000] [1] [DEBUG] Current configuration:
my-app_1 | config: gunicorn.py
my-app_1 | bind: ['0.0.0.0:5000']
my-app_1 | backlog: 2048
my-app_1 | workers: 1
my-app_1 | worker_class: sync
my-app_1 | threads: 1
my-app_1 | worker_connections: 1000
my-app_1 | max_requests: 0
my-app_1 | max_requests_jitter: 0
my-app_1 | timeout: 30
my-app_1 | graceful_timeout: 30
my-app_1 | keepalive: 2
my-app_1 | limit_request_line: 4094
my-app_1 | limit_request_fields: 100
my-app_1 | limit_request_field_size: 8190
my-app_1 | reload: False
my-app_1 | reload_engine: auto
my-app_1 | reload_extra_files: []
my-app_1 | spew: False
my-app_1 | check_config: False
my-app_1 | preload_app: False
my-app_1 | sendfile: None
my-app_1 | reuse_port: False
my-app_1 | chdir: /
my-app_1 | daemon: False
my-app_1 | raw_env: []
my-app_1 | pidfile: None
my-app_1 | worker_tmp_dir: None
my-app_1 | user: 0
my-app_1 | group: 0
my-app_1 | umask: 0
my-app_1 | initgroups: False
my-app_1 | tmp_upload_dir: None
my-app_1 | secure_scheme_headers: {'X-FORWARDED-PROTOCOL': 'ssl', 'X-FORWARDED-PROTO': 'https', 'X-FORWARDED-SSL': 'on'}
my-app_1 | forwarded_allow_ips: ['127.0.0.1']
my-app_1 | accesslog: -
my-app_1 | disable_redirect_access_to_syslog: False
my-app_1 | access_log_format: %(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"
my-app_1 | errorlog: -
my-app_1 | loglevel: debug
my-app_1 | capture_output: True
my-app_1 | logger_class: gunicorn.glogging.Logger
my-app_1 | logconfig: None
my-app_1 | logconfig_dict: {}
my-app_1 | syslog_addr: udp://localhost:514
my-app_1 | syslog: False
my-app_1 | syslog_prefix: None
my-app_1 | syslog_facility: user
my-app_1 | enable_stdio_inheritance: True
my-app_1 | statsd_host: None
my-app_1 | dogstatsd_tags:
my-app_1 | statsd_prefix:
my-app_1 | proc_name: None
my-app_1 | default_proc_name: run:app
my-app_1 | pythonpath: None
my-app_1 | paste: None
my-app_1 | on_starting: <function OnStarting.on_starting at 0x7f6b716c1510>
my-app_1 | on_reload: <function OnReload.on_reload at 0x7f6b716c1620>
my-app_1 | when_ready: <function WhenReady.when_ready at 0x7f6b716c1730>
my-app_1 | pre_fork: <function Prefork.pre_fork at 0x7f6b716c1840>
my-app_1 | post_fork: <function Postfork.post_fork at 0x7f6b716c1950>
my-app_1 | post_worker_init: <function PostWorkerInit.post_worker_init at 0x7f6b716c1a60>
my-app_1 | worker_int: <function WorkerInt.worker_int at 0x7f6b716c1b70>
my-app_1 | worker_abort: <function WorkerAbort.worker_abort at 0x7f6b716c1c80>
my-app_1 | pre_exec: <function PreExec.pre_exec at 0x7f6b716c1d90>
my-app_1 | pre_request: <function PreRequest.pre_request at 0x7f6b716c1ea0>
my-app_1 | post_request: <function PostRequest.post_request at 0x7f6b716c1f28>
my-app_1 | child_exit: <function ChildExit.child_exit at 0x7f6b716dc0d0>
my-app_1 | worker_exit: <function WorkerExit.worker_exit at 0x7f6b716dc1e0>
my-app_1 | nworkers_changed: <function NumWorkersChanged.nworkers_changed at 0x7f6b716dc2f0>
my-app_1 | on_exit: <function OnExit.on_exit at 0x7f6b716dc400>
my-app_1 | proxy_protocol: False
my-app_1 | proxy_allow_ips: ['127.0.0.1']
my-app_1 | keyfile: None
my-app_1 | certfile: None
my-app_1 | ssl_version: 2
my-app_1 | cert_reqs: 0
my-app_1 | ca_certs: None
my-app_1 | suppress_ragged_eofs: True
my-app_1 | do_handshake_on_connect: False
my-app_1 | ciphers: None
my-app_1 | raw_paste_global_conf: []
my-app_1 | strip_header_spaces: False
my-app_1 | [2020-02-12 12:25:59 +0000] [1] [INFO] Starting gunicorn 20.0.4
my-app_1 | [2020-02-12 12:25:59 +0000] [1] [DEBUG] Arbiter booted
my-app_1 | [2020-02-12 12:25:59 +0000] [1] [INFO] Listening at: http://0.0.0.0:5000 (1)
my-app_1 | [2020-02-12 12:25:59 +0000] [1] [INFO] Using worker: sync
my-app_1 | [2020-02-12 12:25:59 +0000] [8] [INFO] Booting worker with pid: 8
my-app_1 | [2020-02-12 12:25:59 +0000] [1] [DEBUG] 1 workers
my-app_1 | [2020-02-12 12:26:07 +0000] [8] [DEBUG] Ignoring connection reset
my-app_1 | [2020-02-12 12:26:07 +0000] [8] [DEBUG] Ignoring connection reset
my-app_1 | [2020-02-12 12:26:12 +0000] [8] [DEBUG] Ignoring connection reset