BusyBoxしたい(busybox

services:
  app:
    image: myapp:latest
    depends_on:
      init-check:
        condition: service_completed_successfully
    ports:
      - "8080:8080"

  # データベース起動待ち用コンテナー
  init-check:
    image: busybox
    command: >
      sh -c "
        echo 'Waiting for database...'
        until wget -q -O- http://db:5432 > /dev/null 2>&1; do
          echo 'Database not ready, waiting...'
          sleep 2
        done
        echo 'Database is ready!'
      "
    depends_on:
      - db

  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: password

コンテナーを起動したい

$ docker compose up -d

コンテナーで操作したい

$ docker compose exec app bash

コンテナーを終了したい

$ docker compose down

BusyBoxについて

BusyBoxはLinuxの基本的なコマンドが揃った軽量イメージです。 約300~400個のUNIXコマンド(アプレット)を単一バイナリに統合しており、イメージサイズは1~2MBと非常に軽量です。 特定のコマンドをまとめたコンテナーを作成するときや、デバッグ、テストに活躍します。 マルチコンテナー環境での Init Container や Sidecar Container、デバッグコンテナーなど補助的な役割で活躍し、依存関係が最小で、セキュリティリスクが低いのが特徴です。 docker compose exec app bash でコンテナー内のシェルを起動し、診断を実行できます。