无法通过docker run命令运行docker镜像

问题描述 投票:0回答:2

我想创建一个python Django容器。我有一个Dockerfile,如下所示-

    FROM python:3.7-slim
    ENV PYTHONUNBUFFERED 1
    RUN apt-get update
    RUN apt-get install python3-dev default-libmysqlclient-dev gcc  -y
    COPY ./requirements.txt /requirements.txt
    RUN pip install -r /requirements.txt
    RUN mkdir /eitan_app
    WORKDIR /eitan_app
    COPY . /eitan_app
    EXPOSE 8000
    RUN python3 manage.py makemigrations
    RUN python3 manage.py migrate

CMD ["python3", "manage.py", "runserver", "0.0.0.0:8000"]

我使用下面提到的命令创建了图像-

docker build -t gcr.io/eitan-269907/eitan-app:v1 .

docker images

以上命令成功创建了图像。现在,我想创建图像的运行容器,因此运行命令-

docker run --rm -p 8000:8000 gcr.io/eitan-269907/eitan-app:v1

以上命令已退出,没有任何错误代码。因此,我运行命令docker ps -a以检查容器的状态。

enter image description here

容器未运行。因此,我尝试使用命令docker logs -f <container id>检查日志,但命令未返回任何内容。

我不了解我的配置出了什么问题。我一直在寻找解决方案,却一无所获。

python docker django-rest-framework
2个回答
1
投票

[这可能是由于运行makemigration或其他脚本时出错,在这种情况下,我尝试将Entrypoint用作'/ dev / null',以使容器不会退出,

这提供了登录到容器并手动执行以检查核心问题的机会

您的情况可能会建议

FROM python:3.7-slim
ENV PYTHONUNBUFFERED 1
RUN apt-get update
RUN apt-get install python3-dev default-libmysqlclient-dev gcc  -y
COPY ./requirements.txt /requirements.txt
RUN pip install -r /requirements.txt
RUN mkdir /eitan_app
WORKDIR /eitan_app
COPY . /eitan_app
ENTRYPOINT ["tail", "-f", "/dev/null"]

一旦构建此映像并执行相同的映像,它将使容器保持运行状态

然后您可以使用docker exec -it <container_name> bash这将允许您登录到容器并执行其余命令,并查看它是否出现错误


1
投票

当您使用--rm标志运行它时,它会在应该执行的命令或作业完成后删除该容器。这解释了为什么在尝试查看日志或使用ps -a时看不到任何内容。尝试使用-d(分离)而不是--rm运行容器,然后查看容器是否仍在运行。

© www.soinside.com 2019 - 2024. All rights reserved.