Gunicorn坚持使用Flask应用程序停靠在docker run命令中

时间:2017-06-19 16:05:02

标签: python docker flask gunicorn devops

我已经构建了容器app_container,根据我的应用程序代码公开了端口8000。容器的入口点是ENTRYPOINT ["/usr/local/bin/gunicorn", "web_interface:app", "-w 4", "-t 90", "--log-level=info", "-b 127.0.0.1:8000", "--reload"]

当我使用docker run --link postgres_db_container --name foo app_container构建并运行容器时,它会向应用程序运行gunicorn命令。与我在本地运行应用程序时不同,它停在

[2017-06-19 16:01:16 +0000] [1] [INFO] Starting gunicorn 19.7.1
[2017-06-19 16:01:16 +0000] [1] [INFO] Listening at: http://127.0.0.1:8000
[2017-06-19 16:01:16 +0000] [1] [INFO] Using worker: sync
[2017-06-19 16:01:16 +0000] [8] [INFO] Booting worker with pid: 8
[2017-06-19 16:01:16 +0000] [10] [INFO] Booting worker with pid: 10
[2017-06-19 16:01:16 +0000] [11] [INFO] Booting worker with pid: 11
[2017-06-19 16:01:16 +0000] [13] [INFO] Booting worker with pid: 13

任何人都知道为什么枪炮过程会在这里停止,而且不会继续?

也没有错误。所以,如果你有任何想法如何获得更多信息,我全都耳朵......

编辑:

使用control+c取消流程时,我会看到测试打印消息:

^C[2017-06-19 16:09:27 +0000] [1] [INFO] Handling signal: int
[2017-06-19 16:09:27 +0000] [10] [INFO] Worker exiting (pid: 10)
[2017-06-19 16:09:27 +0000] [11] [INFO] Worker exiting (pid: 11)
[2017-06-19 16:09:27 +0000] [8] [INFO] Worker exiting (pid: 8)
---- Generate Mapping ----
---- Preparing Databases ----

所以似乎枪炮挂在某个过程中,但我不知道如何找出它是什么。

1 个答案:

答案 0 :(得分:1)

让我们给出一些组合建议:

  • 检查您是否将端口映射到localhost以访问容器应用程序:

    docker run -p 8000:8000 (rest of the command)
    
  • 收听"-b 0.0.0.0:8000"而不是"-b 127.0.0.1:8000",这是docker映射端口的要求。请参阅docker ps,在PORTS列中搜索符号->(您应该看到0.0.0.0:8000->8000

然后,在您的网络浏览器中导航至localhost:8000以检查您的应用是否正确呈现。