kal*_*one 8 docker docker-compose
是否可以以docker-compose up这样的方式运行,即只有在存储库中不存在图像时才会构建?
我正在研究一种测试场景,该场景将在两个不同的环境中运行:笔记本电脑本地,以及作为测试自动化一部分的服务器.我的docker-compose文件看起来像这样:
services:
my-service1:
build: "./local-repo1"
image: "image1"
my-service2:
build: "./local-repo2"
image: "image2"
...
Run Code Online (Sandbox Code Playgroud)
如果我在local-repo目录存在的本地运行它运行正常.如果我尝试在服务器上运行它,而不是从docker存储库中提取它,它会抱怨它无法找到构建路径.如果我拿出build属性它在服务器上运行正常,但除非我事先构建图像,否则它不会在本地运行.
有没有办法让它只在图像不存在的情况下尝试构建?如果不是,我可以尝试一些解决方法,但我更喜欢使用一个docker-compose文件来处理每个案例.
Dan*_*owe 11
您可以使用它docker-compose pull来获取图像.然后,如果它们已经存在,Compose将不会尝试再次构建它们.
要确保避免重建,您可以使用--no-build.
docker-compose pull
docker-compose up -d --no-build
Run Code Online (Sandbox Code Playgroud)
您真正的问题是您正在指定构建上下文,但随后尝试使用docker-compose而不存在该构建上下文.
当docker-compose运行时,即使它没有计划进行构建,它也会验证构建上下文是否至少存在.如果没有,那么它将失败.
要满足此要求,您需要做的就是为任何缺少的构建上下文创建一个空目录.这应该让docker-compose足够快乐地运行.
mkdir -p local-repo1 local-repo2
Run Code Online (Sandbox Code Playgroud)
我正在使用 docker-compose v2.1
当我们运行 docker compose up 时,它会检查镜像是否存在。如果不存在,则仅构建该图像,否则它将跳过该部分
docker 撰写
version: '2.1'
services:
devimage:
image: nodedockertest
build: .
environment:
NODE_ENV: development
ports:
- 8000:8000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6968 次 |
| 最近记录: |