Сводка
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