如何在构建中包含本地库?

时间:2017-03-19 01:53:35

标签: docker docker-compose

我有一个像这样的目录结构:

value

其中git diff --unified=0 HEAD~1 HEAD | grep -v -E -f PATTERNS.txt 包含 app www 共有的代码。为app创建图像:

app/
inc/
www/

所以构建的上下文inc/的内容。当然,应用程序中将缺少cd app docker build . 中的代码,它会中断

谷歌我已经阅读了我应该提出的建议:

app/

其中包含inc/(不错),但也包含其他所有内容(不良内容),例如: WWW

要解决这个问题,我必须构建一个脚本,将docker build -f app/Dockerfile . 的内容复制到inc/,执行构建和删除inc/。但那太乱了,实际上,我不能这样做因为我想要 docker-compose 来做我的构建。

管理此内容的推荐方法是什么?

1 个答案:

答案 0 :(得分:1)

  

但也包括其他一切(坏),例如WWW

这就是.dockerignore file可以派上用场的地方:在其中声明www/

  

在docker CLI将上下文发送到docker守护程序之前,它会在上下文的根目录中查找名为.dockerignore的文件。
  如果此文件存在,CLI将修改上下文以排除与其中的模式匹配的文件和目录。

     

这有助于避免不必要地将大型或敏感文件和目录发送到守护程序,并可能使用ADDCOPY将它们添加到图像中。

包装docker build或docker compose以生成正确的.dockerignore将是理想的。

最终,每个构建都应该能够指定自己的dockerignore文件 见issue 12886
但是:

  

此功能已被暂停,等待正在研究/处理的其他更改;其中一个是在发送构建上下文时使构建器“更智能”;见#31829