docker-撰写错误 - 无法读取文件

docker-compose error - unable to read file

我有一个简单的 docker 文件用于测试 Django 应用程序。我是 运行 docker-compose root 用户,我可以读取 requirements.txt 文件,但是 docker 出错了。有什么建议吗?

root@testdeploy:/app/test-project# docker-compose build
db uses an image, skipping
Building web...
Step 0 : FROM python:2.7
 ---> 93d77aec17a0
Step 1 : ENV PYTHONUNBUFFERED 1
 ---> Using cache
 ---> 25e2164606e7
Step 2 : WORKDIR /app/test-project/
 ---> Using cache
 ---> 366c21333f1f
Step 3 : RUN pip install -r /app/test-project/requirements.txt
 ---> Running in 75599e289c5e
Could not open requirements file: [Errno 2] No such file or directory: '/app/test-project/requirements.txt'
Service 'web' failed to build: The command [/bin/sh -c pip install -r /app/test-project/requirements.txt] returned a non-zero code: 1

正在从命令行读取文件。

root@testdeploy:/app/test-project# head -5 /app/test-project/requirements.txt
Cheetah==2.4.4
Django==1.7
Landscape-Client==14.01
PAM==0.4.2
Pillow==2.6.1

我的 docker 文件。

FROM python:2.7
ENV PYTHONUNBUFFERED 1
WORKDIR /app/test-project/
RUN pip install -r /app/test-project/requirements.txt
ADD . /app/test_project/

docker 构建在与您的主机分开的容器中执行。容器有自己的文件系统,并且不知道主机系统上的文件。

您可以使用

将文件复制到容器中

COPY /path/on/host /path/on/container

Dockerfile

目前pip需要文件,但是还没有添加。

在您的情况下,您可以将底部的 ADD 行移动到 pip 命令之前。它也将是 better practice to use COPY,但这不是错误。

像这样:

FROM python:2.7
ENV PYTHONUNBUFFERED 1
COPY . /app/test_project/
WORKDIR /app/test-project/
RUN pip install -r /app/test-project/requirements.txt

如果还是不行,您需要在主机上调整 . 为正确的 /path/to/test-project。

未来搜索者需要注意的一个问题是该路径是相对于 docker-compose 正在执行的当前 Dockerfile 的目录。

这意味着如果你的文件和你的docker-compose.yml在同一层,而你的Dockerfile在另一个目录,你应该把它移动到Dockerfile所在的目录.