(今さら)Docker composeでWordPress環境を用意する

Hello World.

docker-composeを使ってコンテナ間の繋がりを定義してみるデモに超速で入門する。
ゼロから書くと不要な時間を要するので、こちらを参考にさせていただいた。
写経する中でポイントを咀嚼していく。

~/dockercompose_test というディレクトリを作成し、
その中で作業する。

docker-compose.yml

構成を記述する設定ファイル。ymlで書く。
ansibleでymlには慣れているので嬉しい。


version: "3"
services:
  db:
    image: mysql:5.7
    #container_name: "mysql57"
    volumes:
      - ./db/mysql:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root_pass_fB3uWvTS
      MYSQL_DATABASE: wordpress_db
      MYSQL_USER: user
      MYSQL_PASSWORD: user_pass_Ck6uTvrQ

  wordpress:
    image: wordpress:latest
    #container_name: "wordpress"
    volumes:
      - ./wordpress/html:/var/www/html
      - ./php/php.ini:/usr/local/etc/php/conf.d/php.ini
    restart: always
    depends_on:
      - db
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: wordpress_db
      WORDPRESS_DB_USER: user
      WORDPRESS_DB_PASSWORD: user_pass_Ck6uTvrQ

ルートはservices.
名称の理解がフワフワだが、コンテナをサービスと読んでいることが多いくらいの認識.
配下に db と wordpress が存在する。おなじみの構成を定義している。

db

dbの定義についてパラメタを追っていく.

パラメタ 説明
image mysql57 pull してくるイメージを書く. mysql57という名前のイメージをpullする.
volumes – ./db/mysql:/var/lib/mysql コンテナ内の/var/lib/mysql を ホストの./db/mysql にマウントする(で良いか?)
restart always 再起動ポリシー(コンテナ終了時に再起動するための仕組み)を設定する.再起動ポリシーを設定しておくことで、Dockerデーモンの起動時やホストOSの起動時に自動的にコンテナを開始できる。 alwaysの他にいくつかあるか今はスキップ.
environment MYSQL_ROOT_PASSWORD: root_pass_fB3uWvTS
MYSQL_DATABASE: wordpress_db
MYSQL_USER: user
MYSQL_PASSWORD: user_pass_Ck6uTvrQ
コンテナの環境変数を定義する. 環境変数名はコンテナ依存.

wordpress

wordpressの定義についてパラメタを追っていく.

パラメタ 定義
image wordpress:latest pull してくるイメージを書く. wordpressという名前のイメージをpullする. バージョンは最新.
volumes ./wordpress/html:/var/www/html
./php/php.ini:/usr/local/etc/php/conf.d/php.ini
コンテナ内のディレクトリをホストのディレクトリにマウントする.マウント先を定義する.
restart always 再起動ポリシーをalwaysに設定.内容はdbと同じ.
depends_on – db サービスの依存関係を定義する.要は起動する順番を定義する. wordpressのdepends_onにdbを設定することで,wordpressよりも先にdbを起動できる.dbの起動が完了するまで待ってくれるという意味ではない! Control startup and shutdown order in Compose.
ports 8080:80 コンテナの80番をホストの8080にマップする. http://localhost:8080 とかするとコンテナの80番が開く.
environment WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress_db
WORDPRESS_DB_USER: user
WORDPRESS_DB_PASSWORD: user_pass_Ck6uTvrQ
wordpressコンテナの環境変数を設定する.環境変数はコンテナ依存.

docker compose up

以下で定義したdocker-compose.ymlに基づいて構築が始まる.
-dはDetachedMode. これによりバックグラウンドで実行される.


$ docker-compose up -d

ホストで http://localhost:8080 を開くと以下の通り.

永続化の確認

言語を設定しwordpressのインストールを完了させる.
db(MySQL)に加えられた変更はホストにマウントされたファイルに反映される.

以下により環境を停止した後, 再度upしたとしても,
ホストにマウントされたファイルへの変更が反映され,
インストール済みの状態で立ち上がる.


$ docker-compose down
$ docker-compose up -d

まとめ

docker-compose を使った WordPress環境構築のデモに超速で入門した.
一緒にコンテナを永続化するデモにも入門した.