gpt4 book ai didi

python - Docker 容器立即停止(Flask/Python/Megatutorial)

转载 作者:太空宇宙 更新时间:2023-11-03 14:09:37 25 4
gpt4 key购买 nike

我一直在关注由不可估量的 Miguel Grinberg ( https://learn.miguelgrinberg.com/read/mega-tutorial/ch19.html ) 编写的 Flask 大型教程,最近在部署中遇到了障碍。

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”的各种组合,但没有成功。

最佳答案

-it 表示交互式 tty。
您不能将 -it-d 结合使用,这意味着分离。
删除 -d 并添加 -it:

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

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

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

关于python - Docker 容器立即停止(Flask/Python/Megatutorial),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48598273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com