Docker Compose Tips

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正常之後才開始啟動,這是個有效的確認啟動的執行方式

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料