Docker 使用ADD命令将目录复制到另一个目录
我读过,但是我遇到了一个问题。我想将本地目录Docker 使用ADD命令将目录复制到另一个目录,docker,Docker,我读过,但是我遇到了一个问题。我想将本地目录go复制到docker/user/local/ 我试过: ADD go /usr/local/ 以及: 此外: 但是,我看到以下错误消息: /usr/local/go/src/make.bash: No such file or directory 但是本地go目录确实包含make.bash ADD go /usr/local/ 将复制docker映像的/usr/local/目录中本地go目录的内容 要在/usr/local/中复制go目录本身,
go
复制到docker/user/local/
我试过:
ADD go /usr/local/
以及:
此外:
但是,我看到以下错误消息:
/usr/local/go/src/make.bash: No such file or directory
但是本地go
目录确实包含make.bash
ADD go /usr/local/
将复制docker映像的/usr/local/
目录中本地go
目录的内容
要在/usr/local/
中复制go
目录本身,请使用:
ADD go /usr/local/go
或
实际上,
ADD go/usr/local/
将添加go
文件夹的内容,而不是文件夹本身,您可以使用Thomaslevel解决方案,或者如果由于某种原因无法使用,您可以将WORKDIR
更改为/usr/local/
,然后将您的目录添加到其中,如:
WORKDIR /usr/local/
COPY go go/
或
但是,如果您想添加多个文件夹,那么这样添加它们会很烦人,目前唯一的解决方案是使用COPY
并排除.dockrignore
中所有不需要的目录和文件,假设我得到了文件夹和文件:
- src
- tmp
- dist
- assets
- go
- justforfun
- node_modules
- scripts
- .dockerignore
- Dockerfile
- headache.lock
- package.json
我想添加src assets package.json justforfun go
在Dockerfile中:
FROM galaxy:latest
WORKDIR /usr/local/
COPY . .
在.dockrignore文件中:
node_modules
headache.lock
tmp
dist
或者为了获得更多乐趣(或者你喜欢迷惑更多的人,让他们也受苦:p)可以:
通过这种方式,您可以忽略所有内容,但只从“忽略列表”中排除要复制或添加的内容
这是一个迟来的答案,但增加了更多的方法来解决更多的问题。您可以使用COPY。您需要显式地指定目录。它不会被自己创造出来
COPY go /usr/local/go
引用:我正在尝试使用ADD的多源版本,因此无法为目标指定目标目录名。有没有一种方法可以实现OP在多src格式中要求的操作(即不为每个源目录创建
添加层)?我只想补充一点,说明$HOME
或~
或任何其他shell变量都不起作用。我之所以这么说,是因为我花了大量的时间试图弄明白这一点,尽管这对大多数人来说都是显而易见的。COPY go/usr/local/go不适合我。不抄袭。这真是一件令人困惑的事。为什么COPY
不能像cp
那样简单地操作呢?相反,它的工作原理需要额外的警力。dockerignore文件可以隐藏目录,而复制或添加对列出的项目不起作用
- src
- tmp
- dist
- assets
- go
- justforfun
- node_modules
- scripts
- .dockerignore
- Dockerfile
- headache.lock
- package.json
FROM galaxy:latest
WORKDIR /usr/local/
COPY . .
node_modules
headache.lock
tmp
dist
*
!src
!assets
!go
!justforfun
!scripts
!package.json
COPY go /usr/local/go