在 docker compose 中如何善用 Environment variables ✏️
Environment variables in Compose
Environment variables 可以設定在很多地方, 假如同時出現多個環境變數, 優先順序如下,
- Compose file
- Shell environment variables
- Environment file
- Dockerfile
- Variable is not defined
先來看 Shell environment variables
export ODOO_TAG=12.0
export POSTGRES_TAG=10.9額外補充, 如果想要移除設定, 可執行
unset ODOO_TAG
unset POSTGRES_TAG如果要查看是否有設定成功, 可使用以下指令
echo $ODOO_TAG
echo $POSTGRES_TAG查看全部的 environment variables
export -p然後執行以下指令檢查是否設定正確
docker-compose config注意到 ODOO_TAG 和 POSTGRES_TAG 了嗎 😄
這邊的值和剛剛設定的一模一樣。
然後來看一下 docker-compose.yml
......
services:
web:
image: odoo:${ODOO_TAG:-13:0}
depends_on:
- db
ports:
- "8069:8069"
volumes:
- odoo-web-data:/var/lib/odoo
- ./config:/etc/odoo
- ./addons:/mnt/extra-addons
db:
image: postgres:${POSTGRES_TAG:-10.9}
......${ODOO_TAG:-13:0}: 代表如果沒有填 ODOO_TAG 或是 ODOO_TAG 值為空, 預設帶入 13:0
${POSTGRES_TAG:-10.9} : 代表如果沒有填 POSTGRES_TAG 或是 POSTGRES_TAG 值為空, 預設帶入 10.9
更多資訊可參考 variable-substitution。
還有一種是 Environment file,
主要是建立一個 .env 檔案, 將資訊存在裡面, 但這邊要注意 ❗
Shell environment variables > Environment file
所以如果要使用 .env, 記得要 unset ❗
然後使用 docker-compose config
成功設定成 .env 的資訊了。



