GitLab CI/CD課程26

Deploy with Docker Compose

ZONGRU Li
Aug 13, 2022

目前的Pipeline可以佈署到實際的被佈署機台上

但是無法重複執行

例如修改Pipeline上的tag版本:

Commit後會看到deployjob會失敗:

原因在於前一版已經佈署在機台上,並咬走了3000PORT號了

除了手動進去做docker stop指令

另外還有一個問題是,若是小企業公司想要一次佈署多個容器應用程式

這時候就能考慮使用 — docker compose工具

可以一次把所有容器應用程式定義在一份YAML檔案內

並且很方便的啟動

所以本篇筆記要做的事如以下:

  1. 撰寫docker-compose.yaml檔案
  2. CICD Pipeline佈署這份yaml檔案

撰寫docker-compose.yaml檔案:

回到程式的Repo頁面:

這邊提供了簡單介面可以編輯文字檔案:

但是課程一開始複製的專案已經有寫好的docker-compose.yaml檔了

所以針對那個檔案隨課程編輯而已

這邊先複製image完整名稱過來編輯:

docker-compose.yaml檔案內容:

pipeline部分也要轉用docker-compose來做啟動動作:

不過在上面Commit之前,要先在被佈署機上安裝docker-compose工具

在被佈署機上打docker-compose就會提示安裝指令:

#如上安裝docker-compose:
sudo apt install docker-compose -y
簡單確認版本

但是在那之前還有一件事是

被佈署機台是拿不到這份docker-compose.yaml檔案進行佈署動作的

他只會存在於GitLab Runner機台上

前幾篇我們都是透過docker run驅動被佈署機自己pull image來佈署

所以這邊要特別將docker-compose.yaml檔案從Runner搬給被佈署機

改完後commit!

這邊我遇到bug:

後來發現問題是

前面要加一槓,把動作分開來

所以恢復完整:

commit後跑看看:

失敗的原因是前一次是用docker起的,3000 PORT咬住還沒關掉:

所以這邊先到被佈署機台上關掉舊的Container:

再次重跑Pipeline:

結果是我稍早編輯的Code還沒Approve

merge後確定:

最後終於:

目前的docker-compose.yaml內容為:

.gitlab-ci.yml內容為:

變數化調整docker-compose.yaml內容:

這也意味著要在執行docker-compose指令前要先export這兩個變數:

看看deploy的job log:

也可以到Environments看看結果:

也會連到網頁,網址不貼

當前的docker-compose.yaml:

當前的pipeline code:

也就是完成了以下:

參考課程(reference)

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet