Deployment

如何處理 docker stack deploy 的標籤?

  • January 16, 2018

我有一個正在執行的 docker compose (3) 文件docker stack deploy。我在 Jenkins 管道中執行此操作。

我處理標籤的方式是我設置了一個環境變數API_TAG,並且(相關部分)相應的 docker compose 文件看起來像這樣。

version: '3'

services:
 api:
   image: registry:5000/api:${API_TAG}

如何處理我不只是建構的堆棧/docker compose 文件中其他服務的標籤?我正在處理的管道只建構一個 api 應用程序,而不是它所依賴的三個數據庫。但是,這些數據庫也有特定的標籤(不僅僅是latest)。我真的需要在 swarm 集群中查詢目前正在執行的服務和這些數據庫的標籤,這樣docker stack deploy就不會弄亂任何東西嗎?

理想情況下,您的堆棧撰寫文件應該包含您作為該應用程序的容器執行的所有服務,所以是的,如果您有一個需要包含的數據庫容器,它應該在撰寫文件中,並且您管理在其中執行的版本/標籤撰寫文件。

這裡的想法是您可以設計一個可用於本地開發和集群部署的組合文件(或組合文件和覆蓋文件) 。docker-compose up``docker stack deploy

另一種但 IMO 更複雜的方法是在其 on compose/stack 文件中執行其他服務,並使用手動創建的覆蓋網路來確保它們都在同一個 docker 虛擬網路上。

引用自:https://serverfault.com/questions/892175