Tips
environment file
docker-compose
在1.28版後加入一個新機制,可使用.env
檔案設定變數後供docker-compose.yml
使用,還可以用.env.local
、.env.dev
等檔名來區分各個不同環境所需,只是啟動時要指定設定檔名,雖說就是簡單的profile機制,但的確好用很多。
Reference: docker compose - environment variables
.
├── .env
└── docker-compose.yml
.env
ELK_VERSION=8.1.0
TIME_ZONE=Asia/Taipei
ES_JAVA_OPTS=-Xmx512m -Xms512m
healthcheck
Reference: docker compose - healthcheck
不少在docker compose 裡的組件具有相依性,但僅靠depends_on
仍無法確認前一個組件已完成啟動,但有了healthckeck
就可以在depends_on
加入condition
在healthchceck
中以檢查返回的signal做做為依據
0: success - the container is healthy and ready for use
1: unhealthy - the container is not working correctly
2: reserved - do not use this exit code
下列以一個簡單例子做說明
kafka:
container_name: kafka
healthcheck:
test: nc -z localhost 9092 || exit 1
interval: 5s
timeout: 10s
kafka-config:
container_name: kafka-config
depends_on:
kafka:
condition: service_healthy
以上面例子而言,kafka
會使用nc
來確認localhost 9092
port已可使用,否則就丟出-1
而kafka-config
會在healthcheck
正常之後才開始啟動,這是個有效的確認啟動的執行方式