我看了http://docs.docker.com/engine/reference/builder/#add,但是我遇到了一个问题。我想将本地目录go
复制到docker /user/local/
我试过:
ADD go /usr/local/
以及:
ADD /go/ /usr/local/
此外:
RUN chmod 0755 /usr/local/go/src/make.bash
但是,我看到以下错误消息:
/usr/local/go/src/make.bash: No such file or directory
但本地go
目录确实包含make.bash
。
6条答案
按热度按时间dojqjjoe1#
会将您本地
go
目录的内容复制到您docker镜像的/usr/local/
目录中。要复制
/usr/local/
中的go
目录本身,请用途:或
6jjcrrmo2#
实际上
ADD go /usr/local/
将添加go
文件夹的内容,而不是文件夹本身,您可以使用Thomasleveil解决方案,或者如果由于某种原因不起作用,您可以将WORKDIR
更改为/usr/local/
,然后将您的目录添加到它,如下所示:或
但是如果你想添加多个文件夹,这样添加它们会很烦人,从我目前的问题来看,现在唯一的解决方案是使用
COPY . .
并排除.dockerignore
中所有不需要的目录和文件,假设我有文件夹和文件:我想加上
src assets package.json justforfun go
这样:在Dockerfile中:
在.dockerignore文件:
这样,您就忽略了
node_modules headache.lock tmp dist
,因此它们不会被添加!**第二种方法:**或者为了更有趣(或者你喜欢混淆更多的人,让他们也受苦:P)可以是:
通过这种方式,您可以忽略所有内容,但只从“忽略列表”中排除您希望复制或添加的内容。
这是一个迟来的答案,但增加更多的方法来做同样的涵盖更多的情况。
inkz8wg93#
您可以使用COPY。您需要显式指定目录。它不会自己被创造出来
参考:Docker CP参考
pod7payv4#
正如官方文档所述:
不复制目录本身,只复制其内容。
诀窍是在
<dest>
路径中同时添加文件夹名称,如下所示:即使./src还不存在于容器中,COPY命令也会在内部创建它,并将src的内容复制到新文件夹(即./src)中。
mefy6pfw5#
几年后,但我有这个问题,因为我的文件夹有一个。当我把它取出来的时候,错误就消失了
klsxnrf16#
如果要将所有文件添加到指定位置,这会有所帮助
ADD XML SUITE文件ADD src/test/resources/xmls/* /usr/share/tag/