docker composeコマンドについて

docker composeコマンドについて

Docker Composeは、複数のDockerコンテナを定義し、管理するためのツールです。
これにより、複雑なアプリケーションスタックを簡単に構成し、起動することができます。
基本的には、docker-compose.ymlファイルに設定を記述し、docker composeコマンドを使って操作します。
以下に、よく使用されるdocker composeコマンドとその機能について説明します。

基本的なdocker composeコマンド

1. docker compose up

このコマンドは、docker-compose.ymlファイルで定義された全てのサービスを起動します。

  • dオプションを付けると、バックグラウンドで起動することができます。
docker compose up
docker compose up -d

2. docker compose down

このコマンドは、docker compose upで起動したコンテナを停止し、ネットワークやボリュームを削除します。
デフォルトでは、サービスで作成されたネットワークとボリュームも削除します。

docker compose down

3. docker compose build

このコマンドは、docker-compose.ymlファイルで定義されたサービスのイメージをビルドします。
特に、Dockerfileが変更された場合や、新しいサービスを追加したときに使用します。

docker compose build

4. docker compose logs

このコマンドは、サービスのログを表示します。

  • fオプションを使用すると、ログをリアルタイムでフォローすることができます。
docker compose logs
docker compose logs -f

5. docker compose exec

このコマンドは、実行中のコンテナ内でコマンドを実行します。
例えば、シェルを開く場合などに使用します。

docker compose exec <service> <command>
docker compose exec web /bin/bash

6. docker compose ps

このコマンドは、現在稼働中のコンテナのリストを表示します。
コンテナの状態やポートマッピングなどを確認できます。

docker compose ps

7. docker compose pull

このコマンドは、docker-compose.ymlファイルで定義されたサービスの最新のイメージを取得します。
特に、イメージの更新を確認する際に使用します。

docker compose pull

8. docker compose push

このコマンドは、ローカルでビルドしたイメージをDocker Hubなどのリモートリポジトリにプッシュします。
通常、CI/CDパイプラインの一部として使用されます。

docker compose push

9. docker compose restart

このコマンドは、現在稼働中の全てのサービスを再起動します。
設定ファイルやコードが変更された場合に、サービスを再起動する際に使用します。

docker compose restart

10. docker compose rm

このコマンドは、停止したサービスのコンテナを削除します。
停止中のコンテナが残っている場合に使用します。

docker compose rm

例: docker-compose.ymlファイルのサンプル

以下は、簡単なdocker-compose.ymlファイルの例です。
このファイルは、Webサーバーとデータベースの2つのサービスを定義しています。

version: '3'
services:
  web:
    image: test-web:latest
    ports:
      - "5000:5000"
    volumes:
      - ./web:/app
    depends_on:
      - db
  db:
    image: test-db:latest
    volumes:
      - db-data:/var/lib/mysql
volumes:
  db-data:

この例では、test-webとtest-dbというカスタムイメージを使用して、Webサーバーとデータベースの2つのサービスを定義しています。
また、データベースのデータはボリュームを使って永続化されています。