繁体   English   中英

如何使用正则表达式在docker-compose文件中指定docker镜像

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM