使用Docker部署專案
我們雖然已經準備好環境可以執行Java程式了,不過還少了資料庫,本章將介紹Docker Compose的部署方式,來將我們的專案在Linux Server上跑起來。
什麼是Docker Compose
簡單來說就是使用Docker Compose來一次跑多個不同的容器,像是以範例專案來說,我們需要一個執行Java的容器,也需要一個執行MariaDB的容器,Java的Image我們上一個章節已經做好了,而MariaDB的Image可以利用MariaDB官方提供的Image。
如何使用Docker Compose部署
準備需要的檔案
我們先建立一個用來儲存執行範例專案所需檔案的資料夾,裡面需要一個檔案及一個資料夾,檔案架構如下
├── vaadin-docker
│ ├── docker-compose.yml
│ └── mariadb我們接著切換到剛剛新增的資料夾
# 請將/home/test/vaadin-docker換成你剛剛建立的資料夾
cd /home/test/vaadin-dockerDocker Compose的重點其實是定義容器相關資訊的docker-compose.yml檔案,請參考下列範例,也請參考註解調整設定檔
nano docker-compose.ymldocker-compose.yml
執行Docker Compose指令
請先確定已經將之前用Systemd包好的服務停止再輸入docker compose指令。
開放連線埠(port)
因為我們之前已經開放過8080了,所以不用再開放。
如果你是使用ufw軟體防火牆的話,無法阻擋由Docker開放的port,可以參考https://github.com/chaifeng/ufw-docker 或是改用DigitalOcean提供的防火牆解決。
上傳Image到Docker Hub
我們已經製作好了Image,那要怎麼讓其他人可以拉取(pull)我們的Image呢?接下來我們將介紹要如何將製作好的Image上傳(push)到Docker Hub。
註冊Docker Hub的帳號
在Linux Server上登入Docker Hub

最簡單的方式是使用帳號密碼登入,如果希望有更高的安全性或你有設定兩步驟驗證,需要不使用密碼,改為使用Personal Access Token。

上傳Image
先確認我們有什麼Image,應該會有兩個,一個是我們製作的,另一個是mariadb的

接著我們要替我們製作的Image打上標籤(tag)
你會發現其實雖然前面的名稱不同,但IMAGE ID是相同的,表示是相同的Image

將打好tag的Image上傳到Docker Hub

你可以去Docker Hub網站確定是否成功推上去

提供給他人拉取部署
基本上流程跟前面相同,不過docker-compose.yml有個小地方需要調整(在server裡的image的值的前面加上你的dockerusername),其他部分則不需改變。
結論
相比傳統的部署方式,使用Docker部署更為方便,如果未來有遷移需求的話也很方便,基本上的步驟就是先停止正在跑的容器,將資料複製到新的機器,調整Docker設定檔(主要是路徑的部分),輸入Docker指令就可以跑起來了,資料也會保留好,不過如果新舊機器的架構或作業系統不同(像是x86_64換到arm64或是Linux換到Windows),可能會有相容性的問題,需要額外注意。
Last updated