linux - 构建过程中 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.py
lib
我在它给我错误之后包含了该行RUN ls -la
,因为我想看看它是否正确复制了文件夹。但它的输出并没有显示任何已复制的内容,它显示了一个空文件。所以我真的不明白发生了什么。如果工作目录真的是,/opt/repos/pm3
那么我不应该src
在运行时看到ls
吗?
我希望这里缺少一些关于 linux 或 docker 的明显内容。有任何想法吗?
解决方案
所以我通过创建一个没有它的图像发现它不会在调用RUN python /opt/repos/pm3/lib/acquire_requirements.py
之后创建一个文件夹,就像我的 Dockerfile 的根目录所在的那样。/opt/repos/
pm3
所以我不得不手动将它添加到命令中:
COPY . /opt/repos/
->COPY . /opt/repos/pm3/
推荐阅读
- angular - 如何将图像和数据(如姓名、年龄、id、性别)从 dotnet core webapi 控制器一起发送到 angular 前端并在前端使用
- php - Laravel phpunit 如何使用不同的迁移进行测试
- angular - 可以激活保护验证 url 参数
- go - 为什么恐慌不会发生?
- android - ionic 4 cordova android 构建错误-transformDexArchiveWithExternalLibsDexMergerForDebug
- node.js - 安装了错误的包
- javascript - 使用节点 js 读取谷歌电子表格数据不起作用..?
- python - 如何从 Python 中的其他范围访问`with`-context?
- java - 为什么用户不再找到我的身份验证?
- javascript - 有什么方法可以使用 cypress 存根流星函数进行单元测试?