确实 ADD go /usr/local/ 将添加 content 的 go 文件夹而不是文件夹本身,您可以使用 Thomasleveil 解决方案,或者如果由于某种原因不起作用,您可以将 WORKDIR 更改为 @ 987654324@ 然后将您的目录添加到其中:
WORKDIR /usr/local/
COPY go go/
或
WORKDIR /usr/local/go
COPY go ./
但是,如果您想添加 多个 文件夹,那么添加它们会很烦人,我从当前问题中看到的目前唯一的解决方案是使用 COPY . . 并排除所有.dockerignore 中不需要的目录和文件,假设我有文件夹和文件:
- 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 . .
在 .dockerignore 文件中:
node_modules
headache.lock
tmp
dist
或者为了更有趣(或者你想迷惑更多的人让他们也受苦:P)可以:
*
!src
!assets
!go
!justforfun
!scripts
!package.json
这样你就忽略了一切,但排除了你想复制或只从“忽略列表”中添加的内容。
这是一个较晚的答案,但添加了更多方法来覆盖更多案例。