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 でコンテナー内のシェルを起動し、診断を実行できます。