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