[英]How to specify a docker image in docker-compose file using regex
我有一个使用自动管道作业构建的docker镜像。
它被称为:
REPOSITORY TAG IMAGE ID
test-001-com:3000/img 1.23-SNAPSHOT 2f83de9h895e
注意:TAG每天都在变化,所以明天它将是1.24-SNAPSHOT等......
我的问题是:
如何使用docker-compose中的“image”参数传入正则表达式或者我不必每次都更新它以匹配TAG。
泊坞窗,compose.yml:
services:
test-001:
hostname: "test-001"
container_name: "test-001"
image: "test-001-com:3000/img:1.23-SNAPSHOT"
ports:
- "8000:8000"
version: "2.1"
上面的docker-compose.yml有效,但我可以替换:
图片:“test-001-com:3000 / img: 1.23-SNAPSHOT ”
WITH
图片:“test-001-com:3000 / img: * -SNAPSHOT ”还是什么?! < - 不起作用。
你不能这样做。 image:
必须命名一个确切的版本标签,或者没有标签并使用隐含的...:latest
版本。 一般来说Docker不支持这个; 没有简单的方法可以通过标签搜索可用的图像并与正则表达式或shell glob匹配,你必须知道你在寻找什么。 即使你确实有一个标签列表,也没有什么是“最新”的通用定义。
你把它标记为“kubernetes”。 如果这实际上是Kubernetes问题,那么最好的方法是设置连续部署系统以便为您更新Kubernetes部署。 在删除旧容器之前,Kubernetes将尝试使用新版本启动新容器,因此您应该进行零停机升级。 ( Helm是注入这样的参数的常用工具;如果升级出错,它也很容易支持回滚更新。)
您的示例使用Docker Compose。 image:
字段是变量替换的地方之一,因此您可以设置
image: "test-001-com:3000/img:${IMAGE_VERSION:-latest}"
然后将IMAGE_VERSION
设置为环境变量或在同一目录中的.env
文件中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.