Успешно созданный образ докера не запускается, когда среда была построена из Anaconda - PullRequest
0 голосов
/ 10 февраля 2019

Я построил образ докера, используя следующие Dockerfile:

FROM continuumio/miniconda3

ENTRYPOINT [ “/bin/bash”, “-c” ]

ADD angular_restplus.yaml angular_restplus.yaml

RUN ["conda", "env", "create", "-f", "angular_restplus.yaml"]

RUN ["/bin/bash", "-c", "source activate work"]

COPY json_to_db.py json_to_db.py

CMD ["gunicorn", "-b", "0.0.0.0:3000", "json_to_db:app"]

и команду для его создания:

sudo docker build -t testimage:latest .

, который проходит через:

Step 5/7 : RUN ["/bin/bash", "-c", "source activate work"]
 ---> Running in 45c6492b1c67
Removing intermediate container 45c6492b1c67
 ---> 5b5604dc281d
Step 6/7 : COPY json_to_db.py json_to_db.py
 ---> e5d05858bed1
Step 7/7 : CMD ["gunicorn", "-b", "0.0.0.0:3000", "json_to_db:app"]
 ---> Running in 3ada6fd24d09
Removing intermediate container 3ada6fd24d09
 ---> 6ed934acb671
Successfully built 6ed934acb671
Successfully tagged testimage:latest

Однако, когда я сейчас пытаюсь его использовать, он не работает;Я попытался:

sudo docker run --name testimage -d -p 8000:3000 --rm testimage:latest

, который, кажется, работает нормально при печати

b963bdf97b01541ec93e1eb7

Однако я не могу получить доступ к службе в своем браузере и использовать

sudo docker ps -a

только показывает промежуточные контейнеры, необходимые для создания образа сверху.

Когда я пытаюсь запустить его без флага -d, я получаю

gunicorn: 1: [: “/bin/bash”,: unexpected operator

Означает ли это, что я долженизменить ENTRYPOINT снова?Если да, то к чему?

1 Ответ

0 голосов
/ 11 февраля 2019

Решение можно найти в следующей записи .Я должен был использовать часть

"/bin/bash", "-c"

повсюду.Теперь все работает нормально (используя также ввод @larsks, который тем временем удалил свой ответ):

FROM continuumio/miniconda3

COPY angular_restplus.yaml angular_restplus.yaml
SHELL ["/bin/bash", "-c"] 
RUN ["conda", "env", "create", "-f", "angular_restplus.yaml"]
COPY json_to_db.py json_to_db.py
CMD source activate work; gunicorn -b 0.0.0.0:3000 json_to_db:app

Затем можно запустить

docker build -t testimage:latest .

и, наконец,

docker run --name testimage -d -p 3000:3000 --rm testimage:latest

Если теперь вы используете

docker ps -a

, вы получите ожидаемый результат:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
61df8ac0432c        testimage:latest    "/usr/bin/tini -- /b…"   16 seconds ago      Up 15 seconds       0.0.0.0:3000->3000/tcp   testimage

и сможете получить доступ к услуге по

http://localhost:3000/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...