首页 > 解决方案 > 构建过程中 docker 镜像目录不存在

问题描述

我正在从 Dockerfile 构建一个简单的图像:(注意,pm3是这个 Dockerfile 所在文件夹的名称)

FROM continuumio/miniconda3
MINTAINER Jordan Miller
ENV PORT=5000
COPY .  /opt/repos/
WORKDIR /opt/repos/pm3/

RUN ls -la

RUN python /opt/repos/pm3/lib/acquire_requirements.py

EXPOSE $PORT
ENTRYPOINT ["python","/opt/repos/pm3/src/web/api.py"]

docker build -f Dockerfile -t jm/pm3 .用来建造它。现在我认为这上周工作得很好,但我做了一些改变,它坏了。所以我跑去docker system prune清理一切。但这并没有解决它,所以我认为代码有问题。

无论如何,这是我得到的错误:

Step 7/9 : RUN python /opt/repos/pm3/lib/acquire_requirements.py
 ---> Running in f842a282a6a0
Invalid requirement: '/opt/repos/pm3/lib/acquire_requirements.py'
 File '/opt/repos/pm3/lib/acquire_requirements.py' does not exist.

但它确实存在,在我的 Windows 机器中,文件lib夹中有一个文件夹,文件夹中pm3有一个。我不应该在 linux 盒子上包含它的整个路径吗?acquire_requirements.pylib

我在它给我错误之后包含了该行RUN ls -la,因为我想看看它是否正确复制了文件夹。但它的输出并没有显示任何已复制的内容,它显示了一个空文件。所以我真的不明白发生了什么。如果工作目录真的是,/opt/repos/pm3那么我不应该src在运行时看到ls吗?

我希望这里缺少一些关于 linux 或 docker 的明显内容。有任何想法吗?

标签: linuxdocker

解决方案


所以我通过创建一个没有它的图像发现它不会在调用RUN python /opt/repos/pm3/lib/acquire_requirements.py之后创建一个文件夹,就像我的 Dockerfile 的根目录所在的那样。/opt/repos/pm3

所以我不得不手动将它添加到命令中:

COPY . /opt/repos/->COPY . /opt/repos/pm3/


推荐阅读