更新后的简短版本:如果我有一个无法运行的docker映像(但对原因却只留了很少的细节),是否有办法连接到运行该映像的容器以对其进行调试?
(非常感谢那些指出Dockerfile中有多个CMD条目的问题的人。我仍在努力解决这个问题)
简短版本:我无法通过“ docker run”启动我的Web服务,因为“ Worker无法启动。”我如何找出失败的原因?
长版:
我可以在前台运行带有gunicorn的Django项目:
(trans3) chris@chi:~/website$ gunicorn --bind 0.0.0.0:8000 hero.wsgi
[2018-07-02 15:18:36 +0000] [21541] [INFO] Starting gunicorn 19.7.1
[2018-07-02 15:18:36 +0000] [21541] [INFO] Listening at: http://0.0.0.0:8000 (21541)
[2018-07-02 15:18:36 +0000] [21541] [INFO] Using worker: sync
[2018-07-02 15:18:36 +0000] [21546] [INFO] Booting worker with pid: 21546
^C
[2018-07-02 15:18:39 +0000] [21541] [INFO] Handling signal: int
[2018-07-02 15:18:39 +0000] [21541] [INFO] Shutting down: Master
我有一个用于服务的小型Dockerfile.web:
(trans3) chris@chi:~/website$ cat Dockerfile.web
# start with our Django app image
FROM dockersite:latest
# collectstatic.
CMD python manage.py collectstatic --noinput
# run the server
CMD gunicorn --bind 0.0.0.0:$PORT hero.wsgi
我建立我的形象
(trans3) chris@chi:~/website$ docker build -t dockersite/web -f Dockerfile.web .
Sending build context to Docker daemon 137.5MB
Step 1/3 : FROM dockersite:latest
---> 56b1488f8e27
Step 2/3 : CMD python manage.py collectstatic --noinput
---> Using cache
---> 59585027568d
Step 3/3 : CMD gunicorn --bind 0.0.0.0:$PORT hero.wsgi
---> Using cache
---> c17429800329
Successfully built c17429800329
Successfully tagged dockersite/web:latest
我尝试运行我的图像:
(trans3) chris@chi:~/website$ docker run -e PORT=8000 -p 8000:8000 --env-file=.env dockersite/web:latest
[2018-07-02 19:23:26 +0000] [8] [INFO] Starting gunicorn 19.7.1
[2018-07-02 19:23:26 +0000] [8] [INFO] Listening at: http://0.0.0.0:8000 (8)
[2018-07-02 19:23:26 +0000] [8] [INFO] Using worker: sync
[2018-07-02 19:23:26 +0000] [12] [INFO] Booting worker with pid: 12
MEMCACHEDCLOUD_SERVERS not found, using LocMem cache
[2018-07-02 19:23:27 +0000] [8] [INFO] Shutting down: Master
[2018-07-02 19:23:27 +0000] [8] [INFO] Reason: Worker failed to boot.
如何从Gunicorn中获取更多信息,以告诉我为什么它失败了?我可以调整Python中的记录器吗? (我尝试过--spew
并获得了很多信息,但都没有用。)
答案 0 :(得分:0)
有时docker&Github&gunicorn一起失败,因此请尝试切换分支并切换回去看看是否有作用。
您可能有一个python错误,该日志的日志消失了,而gunicorn拒绝向您显示python错误。
在您的docker文件中的枪支用枪弹发射器中使用它:
filteredItems