Docker Composeで簡単に複数コンテナを管理しよう

こんにちは。今回は、Docker初心者に向けて、Docker Composeについて解説します。Docker Composeは、複数のDockerコンテナを定義し、一括で管理するためのツールです。複数のコンテナを一つひとつ手動で起動するのは手間がかかるため、Docker Composeを使うことで効率的にコンテナを管理できます。

Docker Composeとは

Docker Composeは、Dockerコンテナを定義し、起動・停止・再起動などを一括で管理するためのツールです。Docker Composeの設定ファイル(docker-compose.yml)に必要な情報を記述することで、複数のコンテナを一括で管理することができます。

Docker Composeのインストール

Docker Composeは、Dockerと同様に公式サイトからダウンロードすることができます。以下のコマンドを実行することで、最新版のDocker Composeがダウンロードされます。

$ sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

ダウンロードが完了したら、以下のコマンドを実行してDocker Composeを実行可能にします。

$ sudo chmod +x /usr/local/bin/docker-compose

正しくインストールされたかどうかを確認するために、以下のコマンドを実行してバージョン情報を確認します。

$ docker-compose --version

Docker Composeの設定ファイル

Docker Composeの設定ファイルは、YAML形式で記述されます。設定ファイルの名前はデフォルトで「docker-compose.yml」となっていますが、任意の名前をつけることもできます。

設定ファイルでは、複数のサービス(=コンテナ)を定義します。以下は、WordPressとMySQLをDocker Composeで管理するための設定ファイルの例です。

version: '3'

services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress

volumes:
  db_data:

この設定ファイルでは、MySQLとWordPressのコンテナを定義しています。MySQLコンテナでは、データを永続化するためのボリュームを定義し、WordPressコンテナでは、MySQLコンテナに依存していることを定義しています。また、WordPressコンテナのポート番号を8000に設定しています。

Docker Composeの基本的なコマンド

Docker Composeの基本的なコマンドを紹介します。

Docker Composeの起動

Docker Composeの設定ファイルを元に、コンテナを起動するには以下のコマンドを実行します。

$ docker-compose up

Docker Composeの停止

Docker Composeで起動したコンテナを停止するには以下のコマンドを実行します。

$ docker-compose down

Docker Composeの再起動

Docker Composeで起動したコンテナを再起動するには以下のコマンドを実行します。

$ docker-compose restart

サンプルコード

以下は、Docker Composeを使ってFlaskアプリケーションを起動するための設定ファイルの例です。

version: '3'

services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
    environment:
      FLASK_APP: app.py
      FLASK_ENV: development
    command: flask run --host=0.0.0.0

この設定ファイルでは、Flaskアプリケーションを起動するためのコンテナを定義しています。Dockerfileを使ってイメージをビルドし、ポート番号5000番でアプリケーションを公開しています。また、アプリケーションのコードをボリュームとしてマウントしています。

FROM python:3.9

WORKDIR /code

COPY requirements.txt .

RUN pip install -r requirements.txt

COPY . .

CMD [ "python", "./app.py" ]

Flaskアプリケーションのコードは以下の通りです。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

注意点

Docker Composeを使ってコンテナを管理する際には、以下の点に注意する必要があります。

  • コンテナ間の依存関係を正しく定義すること
  • ポート番号の競合に注意すること
  • コンテナのリソース制限に注意すること

以上が、Docker Composeについての基本的な解説です。複数のコンテナを一括で管理することで、Dockerの効率的な利用ができます。Docker Composeを使って、簡単に複数のコンテナを管理してみてください。

 

Docker 関連のまとめ

Docker 関連のまとめ
Docker Composeで外部Volumeを使う方法   Docker Composeで簡単に複数コンテナを管理しよう   Docker Desktopの有料化に伴う代替手段について   Dockerfileとdocker-compos...

 

オンラインスクールを講師として活用する!

【完全無料】使えるプログラミングスクール体験セミナー
【完全無料】使えるプログラミングスクール体験セミナー WEB制作の無料教材がここにきてどんどん増えてきてるので、使えるものをまとめようと思います。 TecAcademy(テックアカデミー) TechAcademyの無料体験 Samurai ...

 

0円でプログラミングを学ぶという選択

タイトルとURLをコピーしました