首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用自定义名称构建Dockerfile

如何使用自定义名称构建Dockerfile
EN

Stack Overflow用户
提问于 2022-04-04 10:15:28
回答 1查看 193关注 0票数 0

我正在尝试自动化码头形象的建设。假设在一个目录中,有几个Dockerfile文件。其中一些文件被命名为Dockerfile.testDockerfile_node,因为一个目录中有多个文件,而且不能全部命名为Dockerfile

我有一个简单的脚本,它定位所有这些文件,并需要调用docker构建。

这是我用来定位所有Dockerfile的命令。

代码语言:javascript
复制
list=$(find . -name "Dockerfile*")

我得到了以下清单:

代码语言:javascript
复制
./Dockerfile1
./testing/Dockerfile
./testing/Dockerfile_kubernetes

为了获得上下文,我需要找到包含Dockerfile文件的目录。

代码语言:javascript
复制
files=$(find . -name "Dockerfile*" -exec dirname {} \;)

对于每个Dockerfile,我都调用docker build。就像这样..。

代码语言:javascript
复制
for x in $files; do docker build $x; done;

我无法执行docker build,因为我得到了以下错误。

代码语言:javascript
复制
unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /home/ubuntu/repo/Dockerfile: no such file or directory

运行docker build命令将只生成在./testing/Dockerfile中定义的映像。

我知道在一个目录中有多个Dockerfile文件是不好的做法,并且像这样命名它们,但我不是做出这些决定的人。我只需要让它发挥作用。

有办法构建这些Dockerfile吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-04 10:25:55

您需要传递docker文件名才能生成命令。

代码语言:javascript
复制
for x in $files; do docker build -f $x .; done;

默认情况下,

构建命令将在构建上下文的根处查找Dockerfile。-f --file选项允许您指定要使用的替代文件的路径

https://docs.docker.com/engine/reference/commandline/build/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71735538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档