このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker基礎】定義ファイル(docker-compose.yml)を作ってみる

定義ファイル(docker-compose.yml)を作ってみる
Docker Compose を使うには、まず 定義ファイル(docker-compose.yml) を作成し、その中で どんなコンテナを、どんなネットワーク、ボリュームと一緒に起動するか を YAML 形式で記述します。ここでは、WordPress と MySQL を連携させるコンテナ群を例に、Compose ファイルの具体的な作成手順を順を追って見ていきましょう。

1.今回の流れ
- 大項目(services, networks, volumes)を並べる
- それぞれに名前を付ける(コンテナ名、ネットワーク名、ボリューム名)
- MySQL コンテナの定義
- WordPress コンテナの定義
- ファイルを保存 → 次回コンテンツで実行
2.作成するネットワーク・ボリューム・コンテナ

項目 | 値 |
---|---|
ネットワーク名 | wordpress-network |
MySQLのボリューム名 | mysql-volume |
WordPressのボリューム名 | wordpress-volume |
MySQLコンテナ名 | mysql-container |
WordPressコンテナ名 | wordpress-container |
MySQL コンテナの定義
- イメージ名:
mysql
- ネットワーク:
wordpress-network
- ボリューム:
mysql-volume
(マウント先:/var/lib/mysql
) - 再起動設定:
restart: always
- 環境変数:
・MYSQL_ROOT_PASSWORD
:myrootpass
・MYSQL_DATABASE
:wordpress-db
・MYSQL_USER
:wordpressuser
・MYSQL_PASSWORD
:userpass
WordPress コンテナの定義
- depends_on:
mysql-container
(MySQLを先に起動) - イメージ名:
wordpress
- ネットワーク:
wordpress-network
- ボリューム:
wordpress-volume
(マウント先:/var/www/html
) - ポート:
8080:80
- 再起動設定:
restart: always
- 環境変数:
・WORDPRESS_DB_HOST
:mysql-container
・WORDPRESS_DB_NAME
:wordpress-db
・WORDPRESS_DB_USER
:wordpressuser
・WORDPRESS_DB_PASSWORD
:userpass
3.定義ファイルを置く場所
項目 | 値 |
---|---|
Windows | C:\Users\<ユーザー名>\Desktop\docker\wordpress |
Mac | /Users/<ユーザー名>/Documents/wordpress |
Linux | /home/<ユーザー名>/wordpress |
自分の環境に合わせたディレクトリを用意し、そこへ docker-compose.yml
を配置します。
docker-compose.yml
作成手順
STEP1:ディレクトリを作成
作業ディレクトリに移動して、「wordpress
」ディレクトリを作成し、作成したディレクトリに移動します。
PS C:\Users\joeac> cd C:\Users\joeac\Desktop\docker
PS C:\Users\joeac\Desktop\docker> mkdir wordpress
PS C:\Users\joeac\Desktop\docker> cd wordpress
STEP2:docker-compose.yml
を作成
メモ帳や VSCode 等のテキストエディタでファイルを開き、次のように書き込んでいきます。
PS C:\Users\joeac\Desktop\docker\wordpress> code docker-compose.yml
1 - 大項目を並べる
バージョンに続き、必要な大項目(services
、networks
、volumes
)を並べます。
version: "3"
services:
networks:
volumes:
2 - 名前を書く
それぞれの大項目に続けて名前を書きます。以下のように字下げを行います。
version: "3"
services:
mysql-container:
wordpress-container:
networks:
wordpress-network:
volumes:
mysql-volume:
wordpress-volume:
3 - MySQLコンテナの定義を行う
MySQLコンテナに関する定義を記述します。字下げに注意してください。
version: "3"
services:
mysql-container:
image: mysql
networks:
- wordpress-network
volumes:
- mysql-volume:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: myrootpass
MYSQL_DATABASE: wordpress-db
MYSQL_USER: wordpressuser
MYSQL_PASSWORD: userpass
wordpress-container:
networks:
wordpress-network:
volumes:
mysql-volume:
wordpress-volume:
4 - WordPressコンテナの定義を行う
WordPressコンテナに関する定義を記述します。
version: "3"
services:
mysql-container:
image: mysql
networks:
- wordpress-network
volumes:
- mysql-volume:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: myrootpass
MYSQL_DATABASE: wordpress-db
MYSQL_USER: wordpressuser
MYSQL_PASSWORD: userpass
wordpress-container:
depends_on:
- mysql-container
image: wordpress
networks:
- wordpress-network
volumes:
- wordpress-volume:/var/www/html
ports:
- "8080:80"
restart: always
environment:
WORDPRESS_DB_HOST: mysql-container
WORDPRESS_DB_NAME: wordpress-db
WORDPRESS_DB_USER: wordpressuser
WORDPRESS_DB_PASSWORD: userpass
networks:
wordpress-network:
volumes:
mysql-volume:
wordpress-volume:
STEP3:ファイルを保存
何度か見直し、スペースの有無や数、コロンの有無など間違えやすいポイントを中心に確認して保存します。
まとめ
- docker-compose.yml は
version:
→services:
→networks:
→volumes:
の順で構造を組む。 - services の下に
mysql-container
とwordpress-container
を記述し、イメージ、ネットワーク、ボリューム、環境変数などを設定 - depends_on を使うことで コンテナ起動順 を指定可能(WordPress → MySQL のような依存関係)
- スペースやコロンの使い方 を厳守するのが YAML のポイント
次のコンテンツでは、この docker-compose.yml
を 実行して実際にコンテナを動作させる 手順を解説します。開発環境や検証環境でよく利用される Docker Compose の便利さを体験してみましょう。