我正在用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 .来构建它。上个星期我觉得这很管用,但是我做了一些改变,结果坏了。所以我跑去把所有东西都清理干净。但这并不能解决问题,所以我认为是代码有问题。
无论如何,我得到的错误是:
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机器中,docker system prune文件夹中有一个lib文件夹,pm3文件夹中有一个acquire_requirements.py。我不应该把它的整个路径包含在linux框中吗?
我在它给我错误后加入了这一行lib,因为我想看看它是否正确地复制到了文件夹上。但它的输出并没有显示任何复制过的内容,而是显示了一个空文件。所以我真的不明白怎么回事。如果工作目录真的是RUN ls -la那么当我运行/opt/repos/pm3时,我不应该看到src吗?
我希望linux或docker有一些明显的地方我在这里遗漏了。有什么想法吗?

最佳答案

所以我通过创建一个没有RUN python /opt/repos/pm3/lib/acquire_requirements.py的图像发现,它不会在名为/opt/repos/pm3之后创建文件夹,就像Dockerfile的根目录在中一样。
所以我不得不手动添加到命令中:
COPY . /opt/repos/>COPY . /opt/repos/pm3/

10-05 20:00