GitLab CI/CD課程26
目前的Pipeline可以佈署到實際的被佈署機台上
但是無法重複執行
例如修改Pipeline上的tag版本:
Commit後會看到deploy的job會失敗:
原因在於前一版已經佈署在機台上,並咬走了3000的PORT號了
除了手動進去做docker stop指令
另外還有一個問題是,若是小企業公司想要一次佈署多個容器應用程式
這時候就能考慮使用 — docker compose工具
可以一次把所有容器應用程式定義在一份YAML檔案內
並且很方便的啟動
所以本篇筆記要做的事如以下:
- 撰寫docker-compose.yaml檔案
- 讓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:
也就是完成了以下: