【问题标题】:Docker Container stops immediately (Flask/Python/Megatutorial)Docker 容器立即停止(Flask/Python/Megatutorial)
【发布时间】:2018-02-03 14:09:58
【问题描述】:

我一直在关注由不可估量的 Miguel Grinberg (https://learn.miguelgrinberg.com/read/mega-tutorial/ch19.html) 编写的烧瓶超级教程,最近遇到了部署问题。

docker run 命令启动容器,然后立即停止。它也没有出现在 docker ps -a 中。我在这里浏览了很多回复,这些回复似乎表明解决方案是将“-it”添加到 docker run 命令中,但这并不能解决问题。

这是我的 dockerfile:

FROM python:3.6-alpine

RUN adduser -D james

WORKDIR /home/myflix

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

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

ENV FLASK_APP myflix.py

RUN chown -R james:james ./
USER james

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

我的图片名为 myflix:secondattempt。

用于启动容器的命令:

sudo docker run --name myflixcont -d -p 8000:5000 --rm myflix:secondattempt

正如我所说,我已经尝试在“-d”前面添加“-i”和“-t”的各种组合,但无济于事。

【问题讨论】:

    标签: python docker flask


    【解决方案1】:

    -it 表示交互式终端。
    您不能将-it-d 一起使用,这意味着分离。
    删除-d并添加-it

    docker run --name myflixcont -it -p 8000:5000 --rm myflix:secondattempt
    

    另一点(目的是帮助您)是ENTRYPOINT 在执行模式下运行。这意味着它不会启动 bash 或 dash 本身。您应该手动明确地指定它:

    ENTRYPOINT ["sh", "file.sh"]
    # or
    ENTRYPOINT ["bash", "file.sh"]
    

    【讨论】:

      猜你喜欢
      • 2020-07-21
      • 1970-01-01
      • 2023-03-18
      • 2022-12-07
      • 2020-10-22
      • 2020-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多