gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 18:52:56 25 4
gpt4 key购买 nike

我有一个使用自动化管道作业构建的 docker 镜像。

它被称为:

REPOSITORY                      TAG                IMAGE ID        
test-001-com:3000/img 1.23-SNAPSHOT 2f83de9h895e

注意:标签每天都在变化,所以明天它将是 1.24-SNAPSHOT 等...

我的问题是:

如何使用 docker-compose 中的“图像”参数来传递正则表达式或我不必每次都更新它以匹配 TAG 的东西。

docker -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 有效,但我可以替换:

image: "test-001-com:3000/img:1.23-SNAPSHOT"





image: "test-001-com:3000/img:*-SNAPSHOT" or something?! <- Doesn't work.

最佳答案

你不能那样做。 image:必须命名一个准确的版本标签,或者没有标签并使用隐含的 ...:latest版本。一般来说 Docker 只是不支持这个。没有简单的方法可以按标签搜索可用图像并与正则表达式或 shell glob 匹配,您必须知道您在寻找什么。即使您确实有标签列表,也没有“最新”的通用定义。

您将此标记为“kubernetes”。如果这实际上是一个 Kubernetes 问题,那么最好的方法是设置您的持续部署系统来为您更新 Kubernetes 部署。 Kubernetes 会在删除旧 pod 之前尝试使用新版本启动新 pod,因此您应该获得零停机升级。 (Helm 是注入(inject)此类参数的常用工具;如果升级出错,它也很容易支持回滚更新。)

您的示例使用 Docker Compose。 image:场是地点之一variable substitution工作,所以你可以设置

image: "test-001-com:3000/img:${IMAGE_VERSION:-latest}"

然后设置 IMAGE_VERSION作为环境变量或在 .env 中同一目录下的文件。

关于docker - 如何使用正则表达式在 docker-compose 文件中指定 docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52927576/

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