gpt4 book ai didi

docker - 如果图像存在,docker compose 可以跳过构建吗?

转载 作者:IT老高 更新时间:2023-10-28 21:22:17 35 4
gpt4 key购买 nike

是否可以运行 docker-compose up 以使其仅在存储库中不存在镜像时才构建?

我正在开发一个测试场景,该场景将在两种不同的环境中运行:本地在笔记本电脑上,以及在服务器上作为测试自动化的一部分。我的 docker-compose 文件看起来像这样:

services:
my-service1:
build: "./local-repo1"
image: "image1"
my-service2:
build: "./local-repo2"
image: "image2"
...

如果我在 local-repo 目录所在的本地运行它,它运行良好。如果我尝试在服务器上运行它,而不是从 docker 存储库中提取它,它会提示它找不到构建路径。如果我取出 build 属性,它在服务器上运行良好,但除非我事先构建图像,否则它不会在本地运行。

有没有办法让它只在图像不存在时才尝试构建?如果不是,我可以尝试一些解决方法,但我更愿意只使用一个处理每种情况的 docker-compose 文件。

最佳答案

您可以使用 docker-compose pull 来获取图像。然后,如果它们已经存在,Compose 将不会尝试再次构建它们。

要确保避免重建,您可以使用 --no-build

docker-compose pull
docker-compose up -d --no-build

您真正的问题是您正在指定构建上下文,但随后尝试使用 docker-compose 而没有该构建上下文。

当 docker-compose 运行时,即使它没有进行构建的计划,它也会验证构建上下文是否至少存在。如果没有,那么它将失败。

您需要做的就是为任何缺少的构建上下文创建一个空目录。这应该会让 docker-compose 足够高兴地运行。

mkdir -p local-repo1 local-repo2

关于docker - 如果图像存在,docker compose 可以跳过构建吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43354652/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com