簡體   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