Gunicorn 卡在使用 Flask 应用程序的 docker 运行 命令上
Gunicorn is stuck on docker run command with a Flask Application
我构建了容器 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 挂在了某个进程上,但我不知道如何找出它是什么。
让我们给出一些组合建议:
检查您是否将端口映射到本地主机以访问容器应用程序:
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
以检查您的应用程序是否正确呈现。
我构建了容器 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 挂在了某个进程上,但我不知道如何找出它是什么。
让我们给出一些组合建议:
检查您是否将端口映射到本地主机以访问容器应用程序:
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
以检查您的应用程序是否正确呈现。