上篇我們已經成功編輯yaml並透過Docker Compose讓Container跑起來了
這篇就要來深入講解一些yaml的小技巧,以及在UNRAID的WebUI上怎麼來連結Docker Compose
這是上篇運行mysql成功的畫面
可以看到運行新增的Docker Compose APP成功後,就起動了一個Container在主頁上
而主頁的Container管理指令用的是Docker run
這說明什麼呢?
Docker Compose跟Docker run是互通的
因為它們的本質是相同的,只是Docker Compose多了很多"進階管理"的功能
所以先說說接下來這幾天的進度八!
Compose YAML撰寫入門
1.yaml變數
2.env檔使用方式
Compose YAML+.env進階撰寫
1.Container相依性的目的
2.多個Container實戰
3.多個Container相依性實戰
Compose 加入內置指令
1.command
2.healthcheck
Compose 進階小技巧
1.Compose相關格式互換
2.總結
既然yaml是種語言,那自然也有定義變數的功能
用這用法可以精簡yaml設定內容
例如我們可以繼用上篇的mysql來改寫:
version: "2.11"
services:
mysql:
image: mysql:latest
ports:
- 8888:8080
environment:
MYSQL_ROOT_PASSWORD: test123
MYSQL_DATABASE: testdb
volumes:
- /mnt/user/appdata/mysql:/var/lib/mysql:rw
這時,"volumes"就不再是單純屬性了
而是起到了yaml變數的作用
與上層不共用,與下層共用
這樣撰寫等同於程式內所有Container都共享一個volumes屬性
小提示
但一般Docker Compose實例上
我們不會使用變數來撰寫yaml檔案
因為這樣反而容易撰寫錯誤,甚至造成檔案衝突
而是利用屬性搭配.env檔案來撰寫
先說說使用env的優點
減少資安風險
為何要強調減少資安風險呢?
因為很多Container會把環境變數的參數用在設定帳號密碼等資訊
這樣如果將檔案分開,將能設置檔案權限
讓有心人士不會竊取到真實資訊之餘,也能運行Compose
所以就分成了兩個檔案
首先檔案:.env
就照一般設置環境變數的方法即可
MYSQL_ROOT_PASSWORD: test123
MYSQL_DATABASE: testdb
docker-compose.yml,內容則改成
version: "2.11"
services:
mysql:
image: mysql:latest
volumes:
- /mnt/user/appdata/mysql:/var/lib/mysql:rw
ports:
- 8888:8080
environment:
# ${.env檔案裡的變數名稱}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
改完後重新執行 COMPOSE UP
Compose就會自動將.env跟yml一起讀取了