こんにちは。今回は、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 関連のまとめ
オンラインスクールを講師として活用する!