我已阅读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
。
答案 0 :(得分:511)
ADD go /usr/local/
会将您本地go
目录的内容复制到泊坞窗图片的/usr/local/
目录中。
要在go
中复制/usr/local/
目录,请使用:
ADD go /usr/local/go
或
COPY go /usr/local/go
答案 1 :(得分:12)
实际上ADD go /usr/local/
将添加go
文件夹的内容,而不是文件夹本身,您可以使用Thomasleveil解决方案,或者如果由于某种原因而不能解决问题,则可以更改{从{1}}到WORKDIR
,然后将目录添加到其中,例如:
/usr/local/
或
WORKDIR /usr/local/
COPY go go/
如果您要添加多个文件夹,那样添加它们会很烦人,从我当前的问题来看,目前唯一的解决方案是使用WORKDIR /usr/local/go
COPY go ./
并排除{中的所有不需要的目录和文件{1}},假设我有文件夹和文件:
COPY . .
我想添加.dockerignore
以便
在Dockerfile中:
src
tmp
dist
assets
go
justforfun
node_modules
scripts
.dockerignore
Dockerfile
headache.lock
package.json
.dockerignore文件中的
:src assets package.json justforfun go
或者为了获得更多乐趣(或者您想使更多的人迷惑而使他们受苦:P)可以是:
FROM galaxy:latest
WORKDIR /usr/local/
COPY . .
通过这种方式,您将忽略所有内容,但仅从“忽略列表”中排除要复制或添加的内容。
这是一个较晚的答案,但增加了更多的方法来执行相同的操作,甚至覆盖更多的情况。
答案 2 :(得分:4)
您可以使用COPY。您需要明确指定目录。它不会自己创建
>>> print u', '.join([u'Amalia Williamson', u'Celina Martin', u'Joelle Farrow'])
Amalia Williamson, Celina Martin, Joelle Farrow