Не удается получить доступ к докеризованному приложению Flask вне сети - PullRequest
0 голосов
/ 12 февраля 2020

Итак, у меня есть приложение 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
...