DockerでWordPress環境を構築してみた
先日、wp-envというツールを使ってWordPress環境を構築しましたが、今回はDocker上に直接、WordPress環境を構築してみたいと思います。
こんな感じで作りたい
作るにあたって、こんな感じで作りたいというイメージを作りました。
Docker上にWordPress、MariaDB等のコンテナを用意し、それらを連携させるとともに、ローカルPCのファイルシステムとコンテナ内を連携させつつ、永続化するという目論見です。
もちろん、WordPressコンテナ内にWordMoveも入れてしまうという方法もありますが、やはり個々のコンテナはなるべく素のままにしておきたいです。
作業
という訳で、ホームディレクトリの下に~/WordPress/Experimentalというフォルダを作成して、そこに移動します。
ここにまずはdocker-compose.ymlを作成します。
データベースがMariaDBなのは、arm系だとMySQLがなかったためです。バージョンも含め、適当なものを選択してください。上の構成イメージには書いていませんが、PhpMyAdminコンテナも入れてあります。最低限、database:とwordpress:の部分があれば動きます。
インデントに意味があるYAMLファイルですので、インデントを間違えない様にしてください。インデントがずれてしまうとエラーになったり、誤動作します。
version: '3.7'
services:
database:
image: mariadb:10.4
command:
- "--character-set-server=utf8"
- "--collation-server=utf8_unicode_ci"
ports:
- "3306:3306"
restart: on-failure:5
environment:
- MYSQL_USER=${DB_USER}
- MYSQL_DATABASE=${DB_NAME}
- MYSQL_PASSWORD=${DB_PASSWORD}
- MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
volumes:
- ./db:/var/lib/mysql
wordpress:
depends_on:
- database
links:
- database
build:
context: ./docker/
ports:
- "1080:80"
restart: on-failure:5
volumes:
- ./public:/var/www/html
environment:
- WORDPRESS_DB_HOST=database
- WORDPRESS_DB_USER=${DB_USER}
- WORDPRESS_DB_PASSWORD=${DB_PASSWORD}
- WORDPRESS_DB_NAME=${DB_NAME}
phpmyadmin:
depends_on:
- database
image: phpmyadmin/phpmyadmin
ports:
- 1081:80
restart: on-failure:5
environment:
PMA_HOST: database
wordmove:
tty: true
depends_on:
- wordpress
image: mfuezesi/wordmove
restart: on-failure:5
container_name: my_wordmove
volumes:
- ./config:/home
- ./public:/var/www/html
- ~/.ssh:/root/.ssh
ここから参照している環境変数を.envに書いておきます。
#Database設定
DB_USER=root
DB_NAME=wordpress
DB_PASSWORD=password
DB_ROOT_PASSWORD=password
あとは、docker/Dockerfileを作成しました。
docker/Dockerfileに追加
FROM wordpress:latest
RUN apt-get update
RUN apt-get install -y vim
RUN docker-php-ext-install pdo_mysql
RUN echo "file_uploads = On\n" \
"memory_limit = 500M\n" \
"upload_max_filesize = 500M\n" \
"post_max_size = 500M\n" \
"max_execution_time = 600\n" \
> /usr/local/etc/php/conf.d/uploads.ini
最後のRUNから先は、WordPressのアップロード上限が2Mバイトになっているのを修正するためのものです。公式WordPressコンテナは、/usr/local/etc/php/conf.d/にある.iniファイルを結合してWordPressの初期設定として読み込んでくれるそうなので、ここに設定変更したいものを書いておきました。単に動けばいいという場合はRUNの部分は全て不要かと思います。
起動
あとは以下のコマンドを叩けば、コンテナをとってきて環境を構築した上で、必要なものを起動してくれます。
% docker-compose up -d --build
なお、止めるときはdownではなくてstopです。upの逆だからとdownしてしまうと、コンテナが初期化されてしまいます。
docker-compose.ymlのwordpress:の部分で、ポートを1080にしているので、http://localhost:1080/でアクセスできます。他のポートがよければdocker-compose.ymlを書き換えてください。
参考にさせていただいたサイト
偉そうに書いていますが、DockerもWordPressも初心者なので、以下のサイトを参考にさせていただきました。ありがとうございます。
・DockerでWordpress環境を作る + ついでにWordmoveも。 | xxbxxqxx
・Docker-composeで最強(自分史上)のWordPress開発環境を作る - Qiita
・Docker + WordPress + Mailhog + wordmove + Git のローカル開発環境構築 - Qiita
まとめ
wp-envを使う方法も簡単ですが、Dockerとdocker-composeを使う方法も、細かいところを気にしなければそんなに手間ではないかと思います。Node.jsをインストールしたりといった事前作業もないですし、ささっとWordPress環境を立ち上げたいという時にはこれで良い様な気もします。
もちろん、wp-envにはそれ自体の目的とかあるので、適宜使い分けることになります。
拙い記事でございますが、サポートしてもよいよという方はよろしくお願いします。著者のやる気アップにつながります。