我正在用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/