ОБНОВЛЕННАЯ КОРОТКАЯ ВЕРСИЯ: если у меня есть образ докера, который не запускается (но оставляет мало информации о том, почему), есть ли способ подключиться к контейнеру, на котором запущен образ, для его отладки?
(Большое спасибо тем, кто указал на проблему с несколькими записями CMD в Dockerfile. Я все еще пытаюсь обдумать это)
КРАТКАЯ ВЕРСИЯ: я не могу открыть свой веб-сервис с "Docker Run", потому что "Worker не удалось загрузиться". Как я могу узнать, что не работает?
ДЛИТЕЛЬНАЯ ВЕРСИЯ:
Я могу запустить свой проект Django с Gunicorn на переднем плане:
(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
и получил много информации, но ничего из этого не помогло.)