このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Docker基礎】定義ファイル(docker-compose.yml)を作ってみる

定義ファイル(docker-compose.yml)を作ってみる

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

1.今回の流れ

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

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_onmysql-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.定義ファイルを置く場所

項目
WindowsC:\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 - 大項目を並べる

バージョンに続き、必要な大項目(servicesnetworksvolumes)を並べます。

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.ymlversion:services:networks:volumes: の順で構造を組む。
  • services の下に mysql-containerwordpress-container を記述し、イメージ、ネットワーク、ボリューム、環境変数などを設定
  • depends_on を使うことで コンテナ起動順 を指定可能(WordPress → MySQL のような依存関係)
  • スペースやコロンの使い方 を厳守するのが YAML のポイント

 次のコンテンツでは、この docker-compose.yml実行して実際にコンテナを動作させる 手順を解説します。開発環境や検証環境でよく利用される Docker Compose の便利さを体験してみましょう。