【发布时间】:2017-06-19 16:05:01
【问题描述】:
我已经构建了我的容器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
有人知道为什么 gunicorn 进程在这里停滞不前,并且没有继续吗?
也没有错误可以继续。因此,如果您有任何想法如何获取更多信息,我全神贯注...
编辑:
当使用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 ----
所以看起来 gunicorn 挂在了某个进程上,但我不知道如何找出它。
【问题讨论】:
-
还有,您的应用能够处理请求吗?
-
对不起,应该在里面加上,但是没有。
-
oh.. 收听
"-b 0.0.0.0:8000"而不是"-b 127.0.0.1:8000",这是 docker 映射端口的要求 -
一定要映射端口(参见
docker ps,在PORTS 列中搜索符号->)。并告诉我们这会输出什么:curl localhost:8000 -
@Robert You da man!你推荐的东西的组合就成功了。我在浏览器中导航到
localhost:8000并呈现页面。
标签: python docker flask gunicorn devops