· 9 min read

Docker Composeとは?docker-compose.ymlの基本的な書き方と利用方法

Dockerは、アプリケーションの開発、配布、運用を自動化するためのオープンソースプラットフォームです。Docker Composeは、複数のDockerコンテナを定義し、実行するためのツールです。これらのコンテナは、docker-compose.ymlというYAMLファイルで定義されます。

この記事では、Docker Composeとその設定ファイルであるdocker-compose.ymlについて解説します。まずは、Docker Composeが何であるか、そしてそれがなぜ重要なのかを理解することから始めましょう。次に、docker-compose.ymlの基本的な書き方と詳細な設定方法について学びます。最後に、Docker Composeの具体的な利用方法について説明します。

これらの知識を身につけることで、Docker Composeを使って効率的にアプリケーションを開発、テスト、デプロイすることができるようになります。それでは、一緒に学んでいきましょう!

Docker Composeとは

Docker Composeは、複数のDockerコンテナを一元的に管理するためのツールです。これにより、複数のコンテナを一つのサービスとして扱うことができます。Docker Composeは、YAML形式のファイル(通常はdocker-compose.ymlという名前)にサービスの設定を記述することで、それらのコンテナを管理します。

Docker Composeの主な機能は以下の通りです:

  • サービス定義docker-compose.ymlファイルには、アプリケーションの各サービス(例えば、データベース、バックエンドAPI、フロントエンドなど)がどのように動作すべきかが定義されます。これには、使用するDockerイメージ、ポートのマッピング、ボリュームのマウント、環境変数などの設定が含まれます。
  • 依存関係管理docker-compose.ymlファイルでは、サービス間の依存関係を定義することができます。これにより、Docker Composeはサービスを正しい順序で起動、停止、再起動することができます。
  • ネットワーク管理:Docker Composeは、サービス間のネットワーク接続を自動的に管理します。これにより、サービスは互いに名前で通信することができます。

Docker Composeは、開発環境での使用を主な目的としていますが、テストや継続的デプロイメントのパイプライン、さらには本番環境での使用にも適しています。これにより、開発者は一貫した環境でアプリケーションを開発、テスト、デプロイすることができます。これは、“コード一回書けばどこでも動く”というDockerの哲学を強化しています。次のセクションでは、docker-compose.ymlの基本的な書き方について詳しく見ていきましょう。

docker-compose.ymlの基本的な書き方

docker-compose.ymlは、Docker Composeの設定を記述するためのYAML形式のファイルです。このファイルには、アプリケーションの各サービスとその設定が定義されます。

基本的なdocker-compose.ymlファイルの書き方は以下の通りです:

version: '3'
services:
  web:
    build: .
    ports:
     - "5000:5000"
  redis:
    image: "redis:alpine"

この例では、2つのサービス(webredis)が定義されています。

  • webサービスは、現在のディレクトリ(.)にあるDockerfileを使用してビルドされます。また、ホストのポート5000とコンテナのポート5000がマッピングされています。
  • redisサービスは、Docker Hubから取得したredis:alpineイメージを使用します。

このように、docker-compose.ymlファイルを使用すると、複数のサービスとその設定を一元的に管理することができます。次のセクションでは、docker-compose.ymlの詳細な設定方法について見ていきましょう。

docker-compose.ymlの詳細な設定

docker-compose.ymlファイルでは、各サービスの詳細な設定を行うことができます。以下に、主な設定項目をいくつか紹介します:

  • image:使用するDockerイメージを指定します。例えば、image: redis:alpineとすると、Docker Hubからredis:alpineイメージを取得します。
  • build:Dockerイメージをビルドするための設定を指定します。build: .とすると、現在のディレクトリのDockerfileを使用してイメージをビルドします。
  • ports:ホストとコンテナのポートをマッピングします。例えば、ports: ["5000:5000"]とすると、ホストのポート5000とコンテナのポート5000がマッピングされます。
  • volumes:ホストとコンテナのディレクトリをマッピングします。例えば、volumes: ["./data:/data"]とすると、ホストの./dataディレクトリとコンテナの/dataディレクトリがマッピングされます。
  • environment:環境変数を設定します。例えば、environment: ["DEBUG=1"]とすると、DEBUG環境変数に1が設定されます。
  • depends_on:サービス間の依存関係を定義します。例えば、depends_on: ["db"]とすると、このサービスはdbサービスに依存することを示します。

これらの設定を適切に使用することで、複雑なアプリケーションを効率的に管理することができます。次のセクションでは、Docker Composeの具体的な利用方法について見ていきましょう。

Docker Composeの利用方法

Docker Composeを利用するためには、まずdocker-compose.ymlファイルを作成します。このファイルには、アプリケーションの各サービスとその設定が定義されます。

次に、以下のようなDocker Composeのコマンドを使用します:

  • docker-compose updocker-compose.ymlファイルに定義されたすべてのサービスを起動します。このコマンドは、必要なDockerイメージがローカルにない場合は自動的にダウンロードします。また、-dオプションを付けると、サービスをバックグラウンドで実行します。
  • docker-compose downdocker-compose.ymlファイルに定義されたすべてのサービスを停止し、関連するリソース(ネットワーク、ボリュームなど)を削除します。
  • docker-compose ps:現在稼働しているサービスの状態を表示します。
  • docker-compose logs:サービスのログを表示します。

これらのコマンドを使用することで、Docker Composeを使ってアプリケーションを効率的に管理することができます。Docker Composeは、開発環境だけでなく、テストや本番環境でも有用なツールです。それでは、Docker Composeを使って、より効率的なアプリケーション開発を始めてみましょう!

まとめ

この記事では、Docker Composeとその設定ファイルであるdocker-compose.ymlについて詳しく解説しました。Docker Composeは、複数のDockerコンテナを一元的に管理するためのツールであり、開発環境だけでなくテストや本番環境でも有用なツールです。

また、docker-compose.ymlファイルの基本的な書き方と詳細な設定方法についても学びました。これらの知識を活用することで、Docker Composeを使って効率的にアプリケーションを開発、テスト、デプロイすることができます。

Docker Composeは、“コード一回書けばどこでも動く”というDockerの哲学を強化しています。これにより、開発者は一貫した環境でアプリケーションを開発、テスト、デプロイすることができます。

それでは、Docker Composeを使って、より効率的なアプリケーション開発を始めてみましょう!

    Share:
    Back to Blog