こんにちはー!ニアです。
今回は、docker-composeという機能を使ってWordPress環境をPC上で作っていくお話です。
1. docker-composeとは
docker-composeは、アプリで必要な複数のDockerコンテナをまとめて管理する機能です。
例えば今回扱うWordPressをDockerで構築するとなると、
- WordPressコンテナ
- MySQLコンテナ
の2つのコンテナを使うことになりますが、docker-composeを利用すれば、
- コンテナをまとめて作成・起動・停止・削除
- 各コンテナにて必要に応じて環境変数やポートフォワードを設定、ボリュームのマウント
- Dockerのブリッジネットワークを利用することで、コンテナ間だけの通信
ができて便利です。
docker-composeは基本的に1つのYAMLファイルで定義します。もちろんテキスト形式なので、ソース管理も楽々だよ!
2. WordPressのdocker-compose.ymlを作る
まずは、docker-compose .ymlファイルを作成します。
touch docker-compose.yml
次に、WordPressコンテナとMySQLコンテナにて、環境変数やポートフォワード、ボリュームのマウントなどを設定をdocker-compose .ymlに記述します。
version: "3"
services:
# WordPressコンテナ(PHP)
wordpress:
image: wordpress # Dockerイメージ名を指定します。
container_name: wp_app # Dockerコンテナ名を定義します。( --name オプションと同じ )
networks:
- wp_net
# ↓エラーなどでコンテナが終了した時、自動でコンテナを再起動させます。
restart: always
# 環境変数の設定( -e オプションと同じ )
environment:
# WordPressに設定するDB情報を設定します。
WORDPRESS_DB_HOST: wp_db:3306
WORDPRESS_DB_USER: nia
WORDPRESS_DB_PASSWORD: niatan
WORDPRESS_DB_NAME: nia_wp
# ポートフォワードの設定( -p オプションと同じ )
ports:
- 80:80
# ボリュームのマウント( -v オプションと同じ )
volumes:
# WordPressのファイル
- ./wordpress/data:/var/www/html
# MySQLコンテナ
db:
image: mysql:5.6
container_name: wp_db
networks:
- wp_net
restart: always
environment:
TZ: Asia/Tokyo
MYSQL_ROOT_PASSWORD: password
# WordPressで使用するデータベースユーザーとデータベースを設定します。
MYSQL_USER: nia
MYSQL_PASSWORD: niatan
MYSQL_DATABASE: nia_wp
ports:
- 3306:3306
volumes:
# 初回起動時に実行するシェルスクリプト
- ./db/init/init.sh:/docker-entrypoint-initdb.d/init.sh:ro
# MySQLのデータの保存場所
- ./db/data:/var/lib/mysql
# ブリッジネットワーク
# ここで定義したネットワーク名を各コンテナから指定することで、
# ホスト名にコンテナ名を指定するだけで、コンテナ間の通信ができます。
networks:
wp_net:
driver: bridge
docker-compose.ymlを作成したら、そのファイルのディレクトリ上で、以下のwordpress/dataとdb/dataディレクトリを作成します。
mkdir -p wordpress/data
mkdir -p db/data
WordPressコンテナからMySQLコンテナのDBへアクセスできるように、MySQLコンテナの初回起動時、$MYSQL_USERに権限を付与するシェルスクリプトをdb/initに配置します。
mkdir db/init
cat << EOS > db/init/init.sh
> (
> mysql -uroot -p$MYSQL_ROOT_PASSWORD <<EOF
> GRANT ALL ON *.* TO '$MYSQL_USER'@'%';
> EOF
> )
> EOS
これで準備は完了です!docker-compose upコマンドを実行して、WordPressとMySQLコンテナを起動します。
docker-compose up -d
Creating network "wordpress_wp_net" with driver "bridge"
Creating wp_app ... done
Creating wp_db ... done
少し待ってから、ブラウザでlocalhostにアクセスすると、WordPressのインストール画面が表示されます。
WordPressのサイト情報とユーザーアカウントを設定してインストールすれば、構築完了です!
3. docker-composeでよく使うコマンド
docker-compose up -d
docker-compose down
docker-compose start
docker-compose stop
docker-compose ps
docker-compose logs
4. おわりに
今回はdocker-composeを使って、WordPressの環境を構築し、コンテナをまとめて管理していきました。
実際に私は業務で、オンラインゲームのサーバーサイドの開発環境(ローカル上)構築にWebコンテナと DBコンテナ、キャッシュ用コンテナからなるdocker-composeを使っています。起動や停止、環境の再構築などが速くて便利なので開発が捗りまする。
また、開発環境で使用するPCを移行したことが一度あるのですが、docker-compose一式を移行するだけで、簡単に新PC上で環境構築できました。
ちなみにコンテンの管理には他にも、Kubernetesというオーケストレーションツールを使って、複数のホストを横断したコンテナのデプロイや管理をする方法があります。
せっかくMacを2つ持っているので、ちょっとやってみたいなと思いました。
それでは、See you!
コメント