如何使用自定义名称构建 Dockerfile
How to build Dockerfile with custom names
我正在尝试自动构建 Docker 图像。假设在一个目录中,有几个 Dockerfile
个文件。其中一些被命名为 Dockerfile.test
或 Dockerfile_node
,因为在一个目录中有多个文件,它们不能全部命名为 Dockerfile
.
我有一个简单的脚本可以找到所有这些文件并需要调用 docker 构建。
这是我用来定位所有 Docker 文件的命令。
list=$(find . -name "Dockerfile*")
我得到以下列表:
./Dockerfile1
./testing/Dockerfile
./testing/Dockerfile_kubernetes
为了获取上下文,我需要找到包含 Dockerfile
个文件的目录。
files=$(find . -name "Dockerfile*" -exec dirname {} \;)
对于每个 Docker 文件,我调用 docker build
。像这样...
for x in $files; do docker build $x; done;
我无法执行 docker build
,因为出现以下错误。
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
文件并这样命名是不好的做法,但我不是做出这些决定的人。我只需要让它工作。
有没有办法构建这些 Docker 文件?
您需要将 docker 文件名传递给构建命令。
for x in $files; do docker build -f $x .; done;
By default the docker build command will look for a Dockerfile at the
root of the build context. The -f, --file, option lets you specify the
path to an alternative file to use instead
我正在尝试自动构建 Docker 图像。假设在一个目录中,有几个 Dockerfile
个文件。其中一些被命名为 Dockerfile.test
或 Dockerfile_node
,因为在一个目录中有多个文件,它们不能全部命名为 Dockerfile
.
我有一个简单的脚本可以找到所有这些文件并需要调用 docker 构建。
这是我用来定位所有 Docker 文件的命令。
list=$(find . -name "Dockerfile*")
我得到以下列表:
./Dockerfile1
./testing/Dockerfile
./testing/Dockerfile_kubernetes
为了获取上下文,我需要找到包含 Dockerfile
个文件的目录。
files=$(find . -name "Dockerfile*" -exec dirname {} \;)
对于每个 Docker 文件,我调用 docker build
。像这样...
for x in $files; do docker build $x; done;
我无法执行 docker build
,因为出现以下错误。
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
文件并这样命名是不好的做法,但我不是做出这些决定的人。我只需要让它工作。
有没有办法构建这些 Docker 文件?
您需要将 docker 文件名传递给构建命令。
for x in $files; do docker build -f $x .; done;
By default the docker build command will look for a Dockerfile at the root of the build context. The -f, --file, option lets you specify the path to an alternative file to use instead