我想要做的是,如果私有 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 镜像的引用。
答案 0 :(得分:0)
您不能在 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
答案 1 :(得分:0)
我最终使用了 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在本地构建