ADD go /usr/local/会添加go文件夹的内容,而不是文件夹本身,你可以使用Thomasleveil解决方案,或者如果因为某些原因不工作,你可以将WORKDIR更改为/usr/local/,然后将你的目录添加到其中:
WORKDIR /usr/local/
COPY go go/
or
WORKDIR /usr/local/go
COPY go ./
但如果你想添加多个文件夹,这样添加它们会很烦人,目前唯一的解决方案是使用COPY . .并在.dockerignore中排除所有不需要的目录和文件,假设我有文件夹和文件:
- src
- tmp
- dist
- assets
- go
- justforfun
- node_modules
- scripts
- .dockerignore
- Dockerfile
- headache.lock
- package.json
和我想添加src资产包。Json只是为了好玩,所以:
在Dockerfile:
FROM galaxy:latest
WORKDIR /usr/local/
COPY . .
在.dockerignore文件中:
node_modules
headache.lock
tmp
dist
这样,就忽略了node_modules的问题。锁定TMP区域,这样它们就不会被添加!
或者为了更多的乐趣(或者你想让更多人感到困惑,让他们也受苦:P)可以是:
*
!src
!assets
!go
!justforfun
!scripts
!package.json
通过这种方式,您可以忽略所有内容,但只从“忽略列表”中排除您想要复制或添加的内容。
这是一个迟来的答案,但添加更多的方法来做同样的事情,涵盖了更多的情况。