Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Can';t访问网络外部的固定烧瓶应用程序_Python_Docker_Flask_Gunicorn - Fatal编程技术网

Python Can';t访问网络外部的固定烧瓶应用程序

Python Can';t访问网络外部的固定烧瓶应用程序,python,docker,flask,gunicorn,Python,Docker,Flask,Gunicorn,因此,我有一个Flask应用程序在docker容器内运行,我可以在本地机器上的容器外访问它,而不会出现任何问题。它正在容器内监听0.0.0.0:5000,我在浏览器中使用localhost:5000访问它。 但是,现在我想在我的机器外访问应用程序,但它不起作用。以下是我尝试访问应用程序的方式: Machine 1 --> Machine2[Docker container] 因此,当我尝试使用Machine2时,它可以工作,但当我尝试使用Machine2IP:5000时,Flask(Gu

因此,我有一个Flask应用程序在docker容器内运行,我可以在本地机器上的容器外访问它,而不会出现任何问题。它正在容器内监听
0.0.0.0:5000
,我在浏览器中使用localhost:5000访问它。 但是,现在我想在我的机器外访问应用程序,但它不起作用。以下是我尝试访问应用程序的方式:

Machine 1 --> Machine2[Docker container]
因此,当我尝试使用Machine2时,它可以工作,但当我尝试使用Machine2IP:5000时,Flask(Gunicorn)会记录以下内容:

[8] [DEBUG] Ignoring connection reset
它收到了请求,这很好,但我不确定问题出在哪里。。。这是我用来启动容器的docker compose配置

version: '3'
services:
  docker-viewer-app:
    restart: always
    image: registry/myimage
    ports:
      - "5000:5000"
docker compose 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
my-app_1 |[2020-02-12 12:25:59+0000][1][DEBUG]当前配置:
my-app|u 1 |配置:gunicorn.py
my-app|u 1 |绑定:['0.0.0.0:5000']
my-app|u 1积压工作:2048
my-app|u 1工人:1
my-app|1|worker|类:同步
my-app|线程:1
my-app|1|工作者|连接:1000
my-app|u 1最大请求数:0
my-app|1|最大请求数|抖动:0
my-app| 1 |超时:30
my-app|u 1 |优雅|u超时:30
my-app|u 1|keepalive:2
my-app|1 |限制|请求行:4094
my-app|1|限制|请求|字段:100
my-app|1 |限制|请求|字段|大小:8190
my-app|u 1 |重新加载:False
my-app|U 1 |重新加载引擎:自动
my-app_1|重新加载额外文件:[]
my-app|u 1|喷出:错误
my-app_1|检查_配置:False
my-app|u 1|预加载|u应用程序:False
my-app|u 1 |发送文件:无
my-app_1|重用_端口:False
my-app|u 1|chdir:/
my-app|1 |守护进程:False
my-app|u 1|raw_env:[]
my-app|u 1|pidfile:无
my-app|u 1|worker|u tmp|u dir:无
my-app|1|用户:0
my-app|1 |组:0
my-app|u 1|umask:0
my-app|u 1 |初始化组:False
my-app|u 1|tmp|u上传|u目录:无
my-app_1|安全_方案_头:{'X-FORWARDED-PROTOCOL':'ssl','X-FORWARDED-PROTO':'https','X-FORWARDED-ssl':'on'}
my-app_1|转发的_-allow_IP:['127.0.0.1']
my-app|1访问日志:-
my-app_1 |禁用_重定向_访问_至_系统日志:False
my-app|1|access|log|格式:%(h)s%(l)s%(u)s%(t)s“%(r)s”%(s)s%(b)s“%(f)s”%(a)s”
my-app| 1错误日志:-
my-app|u 1|日志级别:调试
my-app|u 1|捕获|u输出:真
my-app|1|logger|U类:gunicorn.glogg.logger
my-app|u 1 |日志配置:无
my-app|1|logconfig|u dict:{}
我的应用程序1系统日志地址:udp://localhost:514
my-app|u 1 |系统日志:False
my-app_1| syslog_前缀:无
my-app|1 | syslog|u设施:用户
my-app|u 1|启用|stdio|u继承:True
my-app|u 1|statsd|u主机:无
my-app|1| dogstatsd|u标签:
my-app|U 1| statsd|U前缀:
my-app|u 1|程序名称:无
my-app_1|默认_程序名称:运行:应用
my-app|u 1|蟒蛇路径:无
my-app|粘贴:无
my-app|1|on|u启动:
my-app|1|正在重新加载:
my-app| 1|准备就绪时:
my-app|1|pre|fork:
my-app|1|post|分叉:
my-app|1|post|worker|init:
my-app|1|worker|int:
my-app|1 |工作者|中止:
my-app|U 1|预执行:
my-app|1|pre|请求:
my-app|1|post|请求:
my-app|1|儿童|出口:
my-app|1|工人|出口:
my-app|1 | nworkers|U已更改:
my-app|1|在|U出口:
my-app|1|代理|协议:错误
my-app|1|proxy_allow__ips:['127.0.0.1']
my-app| 1 |密钥文件:无
my-app| 1 |证书文件:无
my-app| ssl|版本:2
my-app|1|证书要求:0
my-app|u 1|ca|u证书:无
my-app|u 1 |抑制|参差不齐| eofs:正确
my-app|1|do|handshake|on|u connect:错误
my-app|u 1密码:无
my-app_1|原始_粘贴_全局_配置:[]
my-app|条带|页眉|空格:False
my-app|1 |[2020-02-12 12:25:59+0000][1][INFO]从gunicorn 20.0.4开始
my-app|u 1 |[2020-02-12 12:25:59+0000][1][DEBUG]仲裁程序已启动
my-app|1 |[2020-02-12 12:25:59+0000][1][INFO]收听地址:http://0.0.0.0:5000 (1)
my-app|1 |[2020-02-12 12:25:59+0000][1][INFO]正在使用worker:sync
my-app|u 1 |[2020-02-12 12:25:59+0000][8][INFO]带pid的引导工作程序:8
我的工作人员
my-app|u 1 |[2020-02-12 12:26:07+0000][8][DEBUG]忽略连接重置
my-app|u 1 |[2020-02-12 12:26:07+0000][8][DEBUG]忽略连接重置
my-app|[2020-02-12 12:26:12+0000][8][DEBUG]忽略连接重置

为以下内容提供输出:docker compose psOK,使用outputOn主机编辑问题,您可以通过
Machine2IP:5000访问应用程序吗?您是否尝试使用Machine2IP地址访问machine2,这应该是AccessibleEyes,它是这样工作的,问题是访问outisde machine2…请求正在进入容器,但gunicorn出于某种原因重置了连接