「Docker Compose」- 生成镜像构建命令 @20210224

问题描述

在 Docker Compose 中,可以使用 docker-compose build <service> 可以构建单独的镜像。

但是,在实际的应用过程中,还会遇到其他的更复杂的需求,导致我们需要从 docker-compose.yaml 提取构建命令。

该笔记将记录:在 Docker Compose 中,如何使用 docker-compose.yml 生成构建命令。

解决方案

第一步、安装依赖

安装 yq 命令:

apt-get install -y jq
pip3 install yq

因为 yq 是对 jq 命令的封装(还有一个 yq 是 Golang 版本),因此需要 jq 命令。

第二步、执行命令

如下命令,可以用于生成 docker build 命令:

docker-compose -f docker-compose-with-build.yml config  \
    | yq -r '.services | .[] | select(.build != null) | "docker build -f " + .build.context + "/" + .build.dockerfile + " -t " + .image + " " + .build.context'

如下命令,可以用于执行命令(去掉 echo 命令):

docker-compose -f docker-compose-with-build.yml config \
    | yq -r '.services | .[] | select(.build != null) | [.build.dockerfile, .image, .build.context] | @tsv' \
    | while IFS=$'\t' read -r dockerfile image context
do
    echo docker build -f "${context}/${dockerfile}" -t "${image}" "${context}"
done

相关文章

「Docker Compose」- 开机自动启动应用容器
「Docker Compose」- 配置 Bash 补全(Bash Completion)
「Docker Compose」- 在构建时,使用网络加速(代理)
「Docker Compose」- 向远程主机部署服务
「Docker Compose」- docker-compose.yaml(学习笔记)

参考文献

docker-compose build | Docker Documentation

猜你喜欢

转载自blog.csdn.net/u013670453/article/details/114012682