DockerをインストールしてWordPress環境を構築したメモ

スポンサーリンク

Dockerをインストールして、WordPress環境を構築したときの備忘録用のメモになります。

Virtual Boxのホスト環境のOSはWindows10になります。
環境はVirtual BoxにUbuntu 18.04のserver版を仮想マシンとして利用します。
Virtual Boxの仮想マシンのシステム設定は、とりあえずの設定としてRAM:2G、CPU:2コアに、ネットワーク設定はNATとホストオンリーアダプターにします。
目標として、DockerでWeb3層構造を構築します。そのため、WordPress環境に加えて、Nginxも導入し、ホストPCからNginxからリバースプロキシでローカルに構築したWordPress環境にアクセスすることにします。

スポンサーリンク

DockerとDocker Composeのインストール

DockerドキュメントのUbuntuでのインストール方法を参考に、Dockerをインストールします。また、Dockerでのコンテナ作成を楽にするためにDocker Composeもインストールします。インストールコマンドを入力するのが面倒なのでインストール手順を簡単なシェルスクリプトに記述します。

docker-install.sh

DockerでのNginx+WordPress環境の構築準備

Docker Composeを利用するために、複数のコンテナの定義を記述するyamlファイルを作成します。基本的にはDocker HubにあるNginxやWordpressにあるyamlファイルを参考に記述します。

ここでのポート設定はdockerのホストの80,3306,45678番ポートを使用しています。
80番はNginx、3306番はMySQL、45678番がWordPressになります。

docker-compose.yaml

環境変数について

コンテナ作成時に利用する環境変数は、env_fileで記述してファイルから読み込むことにします。環境変数を設定したファイルは、テスト環境なので一つのファイルにして同じファイルを読み込んでもいいですが、ここでは分けて記述することにします。

db_env

webapp_env

nginx_env

環境変数内のホストやURLで使用しているdbやwebappは、Docker Composeがコンテナを作成するときに、名前解決できるようになります。Docker Composeは自動的にネットワークを作成して、dbやwebappなどのservices下のキーの名前でコンテナのIPアドレスを返すように設定します。
また、この通信はコンテナ間の通信であることも注意が必要かもしれません。例えば、webappではホスト側のポートは45678ですが、コンテナ側のポートは80番になっています。なので、プロキシを行うURLは、http://webapp:45678ではなく、http://webapp:80になります。http通信はデフォルトでは80番なのでhttp://webappで十分になります。
ホスト側のポートを利用したい場合は、http://<ホストのIPアドレス>:45678のように設定を行うことができます。

ボリュームについて

永続化させたいデータは、volumesに記述し対応付けをしてマウントします。
dockerのホストのディレクトリ:コンテナのディレクトリ のように記述します。
./mysql/mysql-datavolume:/var/lib/mysql や
./wordpress:/var/www/html がその例になります

また、あらかじめ記述した設定ファイルを読み取りたい場合もマウントを行います。
./nginx/templates:/etc/nginx/templates や
./nginx/conf.d:/etc/nginx/conf.d がその例になります。

Nginxの設定ファイル

Nginxについて、Dockerで起動させる場合は/etc/nginx/templatesの中に設定ファイルのテンプレートファイルがあると、環境変数を利用して書き換えを行って/etc/nginx/conf.dの中にその設定ファイルを入れてくれます。書き換えた設定ファイルを入れる際にディレクトリに実行ユーザの書き込み権限がないとだめらしいので、/etc/nginx/conf.dもマウントしています。

Nginxのテンプレートファイルは以下のようにしています。

./nginx/templates/rproxy.conf.template

DockerのNginxのデフォルトの設定ファイルを取り出したい場合は以下のコマンドでイメージの中の設定ファイルをコピーできます。

DockerでNginx+WordPress環境の構築

docker-composeコマンドを実行する前のディレクトリ構造は以下のようになります。また、docker-install.shは最初にdockerをインストールしたシェルスクリプトなので、コンテナの作成には関係ありません。

このカレントディレクトリで、docker-composeコマンドを実行して環境を構築します。

docker-composeコマンドを行ったら、imageがダウンロードされます。このダウンロードについて、ダウンロードの失敗が多い場合は、Dockerのホストマシンで/etc/docker/daemon.jsonを作成して、max-concurrent-downloads(デフォルトでは3)を1にして、

/etc/docker/daemon.json

dockerを起動し直すことでダウンロードの失敗を減らせるかもしれません。

構築して立ち上がったら、Virtual Boxのホストから、Ubuntu仮想マシンのホストオンリーアダプターのIPアドレス(http://<ホストオンリーアダプターのIPアドレス>)にアクセスすると

docker-wordpress-access

WordPressのインストール画面が表示されます。さらに進むと

docker-wordpress-config

サイトのタイトルとユーザ名を入力できる画面に進みます。ここでデータベースの設定画面が表示されるとデータベースやWordPressの環境変数の設定がうまくいっていない可能性があるので注意が必要です。

これで、ローカルに構築したWordPress環境にアクセスできたので、DockerでのNginx+WordPress環境の構築は終わりになります。
また、コンテナを削除したい場合は

が利用できます。

参考リンク

Install Docker Engine on Ubuntu | Docker Documentation
wordpress - Docker Hub
nginx - Docker Hub