Django Docker compose未复制任何文件
非常简单:下面的docker compose配置不允许在运行后保留任何文件。因此,当我执行docker exec-I-t aas-job-hunter\u web\u 1 ls/app-alt时,我什么也看不到 以下是(非)工作最小示例: 我在Windows10上,我允许安装驱动器并启用TLS连接。我不知道还能做什么。最让我困惑的是,Django Docker compose未复制任何文件,django,docker,docker-compose,Django,Docker,Docker Compose,非常简单:下面的docker compose配置不允许在运行后保留任何文件。因此,当我执行docker exec-I-t aas-job-hunter\u web\u 1 ls/app-alt时,我什么也看不到 以下是(非)工作最小示例: 我在Windows10上,我允许安装驱动器并启用TLS连接。我不知道还能做什么。最让我困惑的是,requirements.txt显然是复制过来的(因为它安装了所有内容),但当我查看docker exec时,它并不在那里 我的目录结构是: parent/
requirements.txt
显然是复制过来的(因为它安装了所有内容),但当我查看docker exec
时,它并不在那里
我的目录结构是:
parent/
website/
manage.py
...
Dockerfile
docker-compose.yml
...
Dockerfile:
docker-compose.yml:
回溯:
我认为复制没有什么问题。但是,您需要将工作目录设置为
/app
,因为您的manage.py
文件位于/app/website
内,而不是Docker内的/website
内
因此,我认为您的Dockerfile
应该是这样的:
FROM python:3.6
RUN mkdir /app
COPY requirements.txt /app/requirements.txt
RUN pip install -r /app/requirements.txt
COPY . /app
WORKDIR /app
EXPOSE 8000
CMD python website/manage.py runserver 0.0.0.0:8000
取消注释#WORKDIR/app
。
我还稍微清理了一下其他部分,以利用WORKDIR
更多功能
FROM python:3.6
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8000
CMD python website/manage.py runserver 0.0.0.0:8000
实际上它复制文件
CMD python /app/website/manage.py runserver 0.0.0.0:8000
/app
文件夹之前调用WORKDIR。因此,将Dockerfile更改为:
FROM python:3.6.2
# By copying over requirements first, we make sure that Docker will cache
# our installed requirements rather than reinstall them on every build
COPY requirements.txt /app/requirements.txt
RUN pip install -r /app/requirements.txt
# Now copy in our code, and run it
COPY . /app
WORKDIR /app
#EXPOSE 8000
CMD python ./website/manage.py runserver 0.0.0.0:8000
# CMD tail -f /dev/null # use when testing
然后再叫它
此外,请记住,在当前的
docker compose
文件中,您使用的是绑定装载,而不是卷,因此,上下文-
将完全替换容器中/app
的内容。构建web步骤1/7:从python:3.6--->0668df180a32步骤2/7:WORKDIR/app--->使用缓存-->91165ba8058b步骤3/7:COPY requirements.txt。-->B94456103CC步骤4/7:运行pip安装-r/requirements.txt->在4a5cbc06f32a中运行错误:无法打开需求文件:[Errno 2]没有这样的文件或目录:“/requirements.txt”错误:服务“web”无法生成:命令“/bin/sh-c pip install-r/requirements.txt”返回了一个非零代码:1
没有在requirements.txt
前面正确安装的//code>。尽管错过了/,但最后我还是收到了相同的错误。构建时,您是否在父目录下?您可以使用docker compose run web bash
或docker compose run web ls
@SuperSandro2000进一步调试。在构建时,我在父目录中。我已经按照你的建议做了-我仍然在/app目录(或者任何目录)中找不到任何文件。你的compose和Dockerfile所在的目录中有.dockergnore
吗?没有
FROM python:3.6
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8000
CMD python website/manage.py runserver 0.0.0.0:8000
CMD python /app/website/manage.py runserver 0.0.0.0:8000
FROM python:3.6.2
# By copying over requirements first, we make sure that Docker will cache
# our installed requirements rather than reinstall them on every build
COPY requirements.txt /app/requirements.txt
RUN pip install -r /app/requirements.txt
# Now copy in our code, and run it
COPY . /app
WORKDIR /app
#EXPOSE 8000
CMD python ./website/manage.py runserver 0.0.0.0:8000
# CMD tail -f /dev/null # use when testing