イメージの連携
docker compose
WordPressをdockerで構築する場合、WordPress 本体が置かれているアプリケーション・サーバ(webサーバー+PHP)と MySQL サーバという大まかに二つのコンテナで構成されることになります。
docker compose とは、複数の Docker コンテナからなるサービスを構築・実行する手順をひとまとめに定義して自動化するという機能です。
普通であればそれらコンテナごとに個別に起動し、さらにそれぞれを関連付ける (link
オプション ) 必要があります。
起動する順序にも気を使わなくてはなりません。コンテナの数が増えてくると面倒になってしまいます。
docker compose はdocker-compose.yml
というファイルで構成を定義します。YAML で体系的に構成を定義出来るので全体像の見通しが良いのが特徴です。
docker run時のオプションをほぼ同じように定義できる上、コマンド1回実行するだけで複数のコンテナサービスを全て起動できます。
Source: docker-compose を使って WordPress テーマ開発環境を構築しよう
docker-compose.yml
$ cd ../wordpress/
$ vi docker-compose.yml
version: "2"
services:
wordpress:
image: wordpress:latest
ports:
- "80:80"
depends_on:
- db
environment:
WORDPRESS_DB_HOST: "db:3306"
networks:
- flat-network
env_file: .env
db:
image: mysql:5.7
volumes:
- "db-data:/var/lib/mysql"
networks:
- flat-network
env_file: .env
volumes:
db-data:
networks:
flat-network:
.env
WORDPRESS_DB_NAME=wordpress
WORDPRESS_DB_USER=wp_user
WORDPRESS_DB_PASSWORD=hogehoge
MYSQL_RANDOM_ROOT_PASSWORD=yes
MYSQL_DATABASE=wordpress
MYSQL_USER=wp_user
MYSQL_PASSWORD=hogehoge
起動
$ docker-compose up -d
$ docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------
wordpress_db_1 docker-entrypoint.sh mysqld Up 3306/tcp
wordpress_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:80->80/tcp
終了(コンテナの停止/削除およびボリュームの削除)
$ docker-compose down -v
もしdocker-compseを使わなかったら...
$ docker run --name db -v db-data:/var/lib/mysql -e MYSQL_USER=wp_user -e MYSQL_PASSWORD=hogehoge -e MYSQL_DATABASE=wordpress -d mysql:5.7
$ docker run -p 80:80 -e WORDPRESS_DB_PASSWORD=hogehoge -d --name wordpress --link db:mysql wordpress
$ docker stop wordpress
$ docker stop db
$ docker rm wordpress
$ docker rm db
$ docker volume rm db-data
環境設定を変えてみよう!
docker-compose.ymlの設定を変更して実行される環境を変えてみましょう。ただし下記条件は守ってください。
- ブラウザからアクセスされるポート番号は9090
- DBのデータ保存先を実行中のフォルダ内に指定する
$ docker-compose up -d
Creating network "wordpress_flat-network" with the default driver
Creating volume "wordpress_db-data" with default driver
Creating wordpress_db_1 ...
Creating wordpress_db_1 ... done
Creating wordpress_wordpress_1 ...
Creating wordpress_wordpress_1 ... done
$ ls -la
-rw-r--r-- 1 hideAki staff 184 6 2 23:01 .env
drwxr-xr-x@ 9 hideAki staff 306 6 3 05:57 db-data <-- できている
-rw-r--r-- 1 hideAki staff 401 6 3 05:56 docker-compose.yml
-rw-r--r-- 1 hideAki staff 414653440 6 2 23:39 mysql.tar
-rw-r--r-- 1 hideAki staff 432754176 6 2 23:32 wordpress46.tar
-rw-r--r-- 1 hideAki staff 418963968 6 2 23:31 wordpress47.tar
$ ls -la db-data/
total 376912
drwxr-xr-x@ 20 hideAki staff 680 6 3 05:57 .
drwxr-xr-x 8 hideAki staff 272 6 3 06:00 ..
-rw-r----- 1 hideAki staff 56 6 3 05:57 auto.cnf
-rw------- 1 hideAki staff 1679 6 3 05:57 ca-key.pem
-rw-r--r-- 1 hideAki staff 1074 6 3 05:57 ca.pem
-rw-r--r-- 1 hideAki staff 1078 6 3 05:57 client-cert.pem
-rw------- 1 hideAki staff 1679 6 3 05:57 client-key.pem
-rw-r----- 1 hideAki staff 1321 6 3 05:57 ib_buffer_pool
-rw-r----- 1 hideAki staff 50331648 6 3 05:57 ib_logfile0
-rw-r----- 1 hideAki staff 50331648 6 3 05:56 ib_logfile1
-rw-r----- 1 hideAki staff 79691776 6 3 05:57 ibdata1
-rw-r----- 1 hideAki staff 12582912 6 3 05:58 ibtmp1
drwxr-x--- 77 hideAki staff 2618 6 3 05:57 mysql
drwxr-x--- 90 hideAki staff 3060 6 3 05:57 performance_schema
-rw------- 1 hideAki staff 1679 6 3 05:57 private_key.pem
-rw-r--r-- 1 hideAki staff 451 6 3 05:57 public_key.pem
-rw-r--r-- 1 hideAki staff 1078 6 3 05:57 server-cert.pem
-rw------- 1 hideAki staff 1679 6 3 05:57 server-key.pem
drwxr-x--- 108 hideAki staff 3672 6 3 05:57 sys
drwxr-x--- 3 hideAki staff 102 6 3 05:57 wordpress
$ docker-compose down -v
docker-compose
の使い方、イメージできましたか?
(補足)データボリュームの指定書式について
公式リファレンスに記載があります。参考にしてください