Docker入門

Dockerの開発環境をローカル環境に構築する手順や、 Docker を使ったプログラムの記述方法や実行までをサンプルを使いながら順に学習していきます。

docker-composeでのhealthcheckによるデータベースヘルスチェック【サンプルコード有】

healthcheckとサンプルコード

以下のコードではappdbに依存しており、dbが起動していなければエラーが出てしまうため、その問題を解決するべくhealthcheckを使用しております。

version: '3'

services:
    app:
        image: koda/docker-knowledge
        volumes:
            - ./volumes/knowledge:/root/.knowledge
        ports:
            - "8080:8080"
        restart: always
        depends_on:
            db:
                condition: service_healthy ##### here #####
    db:
        image: postgres:9
        environment:
            - POSTGRES_USER=postgres
            - POSTGRES_PASSWORD=admin123
            - POSTGRES_DB=knowledge_production
        volumes:
            - ./volumes/postgres/data:/var/lib/postgresql/data
        restart: always
        healthcheck: ##### here #####
            test: "psql -U postgres"
            interval: 3s
            timeout: 3s
            retries: 100
            start_period: 10s
  • appdbに依存しており、dbが起動していなければエラーが出てしまう
  • 上記の問題を解消するためにdepends_onconditionでヘルスチェックが合格しているかどうかを確認している。
  • healthcheckではpsql -U postgresでログインできるかどうかでサーバーが起動しているかどうかを確認している。