Docker在构建映像时找不到文件

Igo*_*oes 3 python docker dockerfile

这是我的Dockerfile

FROM python:3.6-slim

COPY app/ /app

EXPOSE 8000

RUN cd /app/
RUN pip install -r requirements.txt

WORKDIR /app/project/

RUN python manage.py makemigrations
RUN python manage.py migrate
RUN export DJANGO_SETTINGS_MODULE="project.settings"

CMD [ "python", "manage.py", "server"]
Run Code Online (Sandbox Code Playgroud)

当我尝试构建它时,它无法说它找不到app文件夹中的requirements.txt.

小智 6

当你这样做

RUN cd /app/
RUN pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

Docker将进入/ app/project,然后,将返回上一个文件夹,然后,第二个命令将失败.你必须像这样使用它:

RUN cd /app/ && pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

你可以想象Django在这个链接上使用Docker时的工作方式,该链接有一个运行Django的容器和类似的Dockerfile.

编辑:要匹配评论,您应该将导出行替换为ENV,例如:

ENV DJANGO_SETTINGS_MODULE project.settings
Run Code Online (Sandbox Code Playgroud)

  • 你应该用`ENV DJANGO_SETTINGS_MODULE project.settings`替换`RUN export DJANGO_SETTINGS_MODULE ="project.settings"`参见ENV的文档https://docs.docker.com/engine/reference/builder/#env (2认同)