无法使用docker run命令运行docker映像

时间:2020-03-15 04:07:57

标签: python docker django-rest-framework

我想创建一个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>检查日志,但命令未返回任何内容。

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

2 个答案:

答案 0 :(得分:2)

这可能是由于运行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 :(得分:1)

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

相关问题