簡體   English   中英

如何正確重啟Docker容器進行部署過程?

[英]How to correctly restart Docker containers for deployment process?

我正在創建一個腳本,該腳本將在每次推送到母版后用作GitHub webhook。 現在,在此腳本中,我的部署如下所示:

cd directory/to/docker-compose
git pull
docker-compose up --build -d --force-recreate

因此,每次我努力掌握時,我都會執行一個部署腳本,該腳本從GitHub中提取更改,並通過代碼更改重新啟動Docker容器。

如果這是正確的方法,有人可以確認或給我一些提示嗎?

您的部署過程完全不需要Git。 執行此操作的標准方法是:

  1. 讓您的CI系統運行docker build以從每次提交構建映像。 用日期戳,源代碼管理標簽,源代碼管理更改ID或其他名稱(或所有這些;但是唯一的,不是latest )來標記每個圖像。
  2. docker push構建的映像docker push送到某個中央注冊表(Docker Hub,Amazon ECR,Google GCR,一些自托管對象,...)。
  3. docker-compose.yml更改image標簽,然后重新運行docker-compose.yml docker-compose up Compose會注意到圖像已更改,請停止舊容器,拉出更改后的圖像,然后開始新的圖像。

在最后一步中,請注意image:標簽支持環境變量擴展 ,因此您docker-compose.yml可以這樣說:

version: '3'
services:
  one:
    image: "myorg/service-one:${SERVICE_ONE_TAG:-latest}"

如果未設置環境變量,它將使用latest ,但是您的CI / CD系統可以將環境變量設置為其他值。

(如果您遷移到Kubernetes,則相同的方法也很重要:您通常沒有對節點的直接登錄訪問權限,因此您無法將源代碼或資產拉到主機上;您必須手動在每個主機上進行操作;並且對Deployment規范的更改是系統實際進行更改的關鍵。如果您現在采用此設置,然后再遷移到Kubernetes,則將免費獲得其零停機滾動升級系統。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM