使用 docker-compose 构建 docker 图像(如果它们不存在于 docker 存储库中)
Building docker images if they don't exists on docker repository with docker-compose
我想做的是,如果图像不在私有 docker 存储库中,则使用 docker-compose 从源代码构建该图像。
例如
version: '3.4'
webapp:
image: private_ecr_repo.amazonecr.com/webapp:latest
build:
context: "."
因此,当 private_ecr_repo 上不存在图像时,我希望从本地源构建它。
PS:我看过 docker-compose build --pull
docker-compose up --no-build
,但它们没有我想要的行为。
根据文档,当图像属性与 docker-compose 文件中的构建上下文一起使用时,图像属性值表示构建图像的标签。当未提及构建上下文时,image 属性将作为从中提取 docker 图像的参考。
您不能有条件地在 docker-compose 文件中设置内容,但您可以使用 compose profiles
version: '3.4'
services:
webapp:
image: private_ecr_repo.amazonecr.com/webapp:latest
profiles:
- build
webappbuild:
build:
context: "."
profiles:
- pull
那么你可以docker-compose --profile pull up
或docker-compose --profiles build up
我最终使用了 docker compose 的覆盖配置功能并默认为 ecr 图像
即
docker-compose.yml
version: '3.4'
webapp:
image: private_ecr_repo.amazonecr.com/webapp:latest
当我想构建本地图像时,我会指定多个 docker-compose 文件
docker-compose.local.yml
version: '3.4'
webapp:
build:
context: "."
使用命令 docker-compose -f docker-compose.yml -f docker-compose.local.yml
第二个文件添加构建上下文并导致 docker-compose 在本地构建
我想做的是,如果图像不在私有 docker 存储库中,则使用 docker-compose 从源代码构建该图像。
例如
version: '3.4'
webapp:
image: private_ecr_repo.amazonecr.com/webapp:latest
build:
context: "."
因此,当 private_ecr_repo 上不存在图像时,我希望从本地源构建它。
PS:我看过 docker-compose build --pull
docker-compose up --no-build
,但它们没有我想要的行为。
根据文档,当图像属性与 docker-compose 文件中的构建上下文一起使用时,图像属性值表示构建图像的标签。当未提及构建上下文时,image 属性将作为从中提取 docker 图像的参考。
您不能有条件地在 docker-compose 文件中设置内容,但您可以使用 compose profiles
version: '3.4'
services:
webapp:
image: private_ecr_repo.amazonecr.com/webapp:latest
profiles:
- build
webappbuild:
build:
context: "."
profiles:
- pull
那么你可以docker-compose --profile pull up
或docker-compose --profiles build up
我最终使用了 docker compose 的覆盖配置功能并默认为 ecr 图像
即
docker-compose.yml
version: '3.4'
webapp:
image: private_ecr_repo.amazonecr.com/webapp:latest
当我想构建本地图像时,我会指定多个 docker-compose 文件
docker-compose.local.yml
version: '3.4'
webapp:
build:
context: "."
使用命令 docker-compose -f docker-compose.yml -f docker-compose.local.yml
第二个文件添加构建上下文并导致 docker-compose 在本地构建