Docker не работает: контейнер не создан, несмотря на создание образа контейнера - PullRequest
0 голосов
/ 31 октября 2019

Сводка

docker run, похоже, не создает контейнер (но также не выдает ошибку), несмотря на docker build успешное построение образа контейнера.

Ввод иВыход

1. Успешное создание образа докера ..

$ docker build -t minitwitter:latest .
...
Successfully built da191988e0db
Successfully tagged minitwitter:latest
$ docker images
REPOSITORY    TAG         IMAGE ID        CREATED         SIZE
minitwitter   latest      da191988e0db    6 seconds ago   173MB
python        3.7-alpine  b11d2a09763f    9 days ago      98.8MB

2. ..и запуск докера завершается без ошибок ..

$ docker run --name minitwitter -d -p 8000:5000 --rm minitwitter:latest
e8835f1b4c72c8e1a8736589c74d56ee2d12ec7bcfb4695531759fb1c2cf0e48

3. ..но, похоже, док-контейнер не существует.

$ docker ps
CONTAINER ID  IMAGE  COMMAND  CREATED  STATUS  PORTS  NAMES

И переход к порту, где должно быть открыто приложение, http://localhost:8000, возвращает ошибку соединения ERR_CONNECTION_REFUSED.

Файл Docker, boot.sh

Файлы Dockerfile и boot.sh довольно простые, я думаю:

Dockerfile

FROM python:3.7-alpine

RUN adduser -D minitwitter

WORKDIR /home/minitwitter

COPY requirements.txt requirements.txt
RUN python -m venv env
RUN env/bin/pip install -r requirements.txt
RUN env/bin/pip install gunicorn

COPY app app
COPY migrations migrations
COPY minitwitter.py config.py boot.sh ./
RUN chmod a+x boot.sh

ENV FLASK_APP minitwitter.py

RUN chown -R minitwitter:minitwitter ./
USER minitwitter

EXPOSE 5000
ENTRYPOINT ["./boot.sh"]

boot.sh

# BOOTS A DOCKER CONTAINER
#!/bin/sh
source env/bin/activate
flask db upgrade
exec gunicorn -b :5000 --access-logfile - --error-logfile - minitwitter:app

1 Ответ

0 голосов
/ 31 октября 2019

Поместите 'shebang' - #!/bin/sh - в первую строку сценария boot.sh.

Как я нашел этот ответ: Это сообщение в блоге , которое относится к этому сообщению Stackoverflow .

Проблема: в исходном скрипте есть комментарий к первой строке и шебангу во второй строке.

Примечание: название «Вопроса» вводит в заблуждение: док-контейнер* был построен . Контейнер, однако, был недолгим, и, учитывая, что я использовал опцию -rm в команде docker run, контейнер был удален после его завершения в течение 2 секунд;вот почему он не появился в команде docker images -a.

...