我有一个简单的设置,可以克隆Git存储库并编译二进制文件,然后将其复制到容器中
Dockerfile:
FROM ubuntu:16.04
RUN apt-get update && apt-get install -y <...>
RUN git clone <REPO>
WORKDIR <REPO>/build
RUN cmake ..
RUN make install
RUN ls bin
ADD bin/binaryname /
ENTRYPOINT <...>
Docker输出:
[100%] Linking CXX executable bin/binaryname
...
---> 4a9c6bb40214
Removing intermediate container 00bf96c84f37
Step 7 : RUN ls bin
---> Running in c295c1fca462
binaryname
---> a418c1bfa6cd
Removing intermediate container c295c1fca462
Step 8 : ADD bin/binaryname /
lstat bin/binaryname: no such file or directory
因此,基本上docker可以看到该文件,但不会添加它,为什么?
最佳答案
删除ADD
指令,它应该可以工作。原因如下:
所有RUN
指令都发生在正在构建的镜像中,而不是在本地计算机上。 ADD
指令尝试将文件从主机文件系统复制到镜像。由于您是在镜像中构建文件bin/binaryname
的,因此它在主机上的bin / binaryname下不存在。它已经存在于图像中,因为它就是构建位置。
关于docker - Docker不添加现有文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44510141/