はじめに
Dockerのことを知っておかないと恥ずかしい世の中になってきたので、学習がてらWordPressの開発環境を構築してみました。
さまざまなサイトを参考にさせていただき良いとこ取りをして、過去の経験を元にWordPressの開発に最低限必要なものを網羅しました。
また、DockerはVagrantで動かしています(Docker環境をVagrantで構築する)。
前提
- docker-composeを利用
- Dockerイメージは公式を利用
- ローカルメールテストができる(MailHogを利用できる)
ファイル構成
wp/
├─ docker-compose.yml
├─ Dockerfile
├─ .env
├─ php/
│ └─ php.ini
└─ db-data/
docker-compose.yml
docker-compose.ymlの記述は以下のとおり。
version: "3"
services:
# WordPress
wordpress:
build: $PWD
restart: always
container_name: my-container-name
volumes:
- $PWD/themes:/var/www/html/wp-content/themes
- $PWD/php/php.ini:/usr/local/etc/php/php.ini
ports:
- "8080:80"
depends_on:
- db
environment:
WORDPRESS_DB_HOST: "db:3306"
networks:
- my_wordpress_network
env_file: .env
# MySQL
db:
image: mysql:5.7
restart: always
container_name: my-container-name-db
volumes:
- db-data:/var/lib/mysql
# Import SQL Data
#- $PWD/db-data/mysql.dump.sql:/docker-entrypoint-initdb.d/install_wordpress.sql
networks:
- my_wordpress_network
env_file: .env
# MailHog
mailhog:
image: mailhog/mailhog
restart: always
container_name: my-container-name-mailhog
ports:
- "8025:8025"
- "1025:1025"
networks:
- my_wordpress_network
volumes:
db-data:
networks:
my_wordpress_network:
Dockerfile
Dockerfileの記述は以下のとおり。
FROM wordpress:latest
# 必要なツールをインストール
RUN apt-get update
RUN apt-get -y install unzip
# WP プラグイン (zip) ダウンロード
WORKDIR /tmp/wp-plugins
RUN curl -O https://downloads.wordpress.org/plugin/wp-multibyte-patch.2.8.1.zip
# Zip ファイルを解凍してインストール
RUN unzip './*.zip' -d /usr/src/wordpress/wp-content/plugins
# 不要になった一時ファイルを削除
RUN apt-get clean
RUN rm -rf /tmp/*
# サーバが読めるように wp-content 以下の所有者を変更
RUN chown -R www-data:www-data /usr/src/wordpress/wp-content
# MailHog でメールを受信できるように設定
RUN curl --location --output /usr/local/bin/mhsendmail https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64
RUN chmod +x /usr/local/bin/mhsendmail
RUN echo 'sendmail_path="/usr/local/bin/mhsendmail --smtp-addr=mailhog:1025 --from=no-reply@docker.dev"' > /usr/local/etc/php/conf.d/mailhog.ini
WORKDIR /var/www/html
.env
.envの記述は以下のとおり。
WORDPRESS_DB_NAME=wordpress
WORDPRESS_DB_USER=admin
WORDPRESS_DB_PASSWORD=pass
MYSQL_RANDOM_ROOT_PASSWORD=yes
MYSQL_DATABASE=wordpress
MYSQL_USER=admin
MYSQL_PASSWORD=pass
php.ini
php.iniの記述は以下のとおり。
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
Dockerコンテナの操作
コンテナを操作するコマンドのメモです。
# Docker コンテナのシェルの中に入る
docker exec -it {コンテナ名} bash
# docker exec -it my-container-name bash
# mysqldump でバックアップをする
docker exec -it {dbコンテナ名} sh -c 'mysqldump {データベース名} -u {データベースユーザ名} -p{データベースパスワード} 2> /dev/null' > $PWD/db-data/mysql.dump.sql
# docker exec -it my-container-name-db sh -c 'mysqldump wordpress -u admin -ppass 2> /dev/null' > $PWD/db-data/mysql.dump.sql
GitHubで公開
上記までの一式をGitHubで公開しています。
Beacats/coreos-vagrant-docker-wordpress
コメント