在一个图层中复制多个资产


0

我想做这个:

COPY src/ public/ config-overrides.js /usr/src/app/

但我已经学会了这实际意味着的艰难方式:

COPY src/* public/* config-overrides.js /usr/src/app/

这根本不是我想要的。

我可以通过一个破解这个 .dockerignore,但我不喜欢这个解决方案,因为:

  • 如果将新文件添加到repo,则需要将其添加到 .dockerignore 太。
  • 我喜欢明确列出我的依赖项 Dockerfile

如何在单个图层中复制文件和目录的显式列表(而不仅仅是内容)?

我只是SOL吗?

Answers:


0

您可以重新组织回购:

app
+-- src
+-- public
\-- config-overrides.js

然后你就会

COPY app/ /usr/src/app/

另一个选择是使用多阶段构建:

FROM scratch as app
COPY src/ /usr/src/app/ 
COPY public/ /usr/src/app/ 
COPY config-overrides.js /usr/src/app/ 

FROM your_base
COPY --from=app /usr/src/app/ /usr/src/app/

否则,保持3个单独的层。额外层的额外开销实际上是最小的。您想要合并图层的时间是在您获得数十个图层时,如果您在多个图层中具有相同的文件并且会覆盖它,或者您更改/删除在先前图层中创建的文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.