メモ > サーバ > 各論: Docker > WordPress
WordPress
※後から以下がリリースされた
未検証だが、次回にWordPress環境を作るときは検討したい
WordPress公式dockerパッケージ wp-env による開発環境構築 - Tips - Capital P - WordPressメディア
https://capitalp.jp/2020/05/15/head-first-wp-env/
以下、上のパッケージとは関係なく検証したもの
ミドルウェアだけでなく、アプリケーションも含めて構築できる
以下はGit管理も想定した例
■ファイルの作成
C:\Users\refirio\docker\ 内に以下を作成するとする
wordpress\.gitignore
Thumbs.db
.DS_Store
/docker-compose.override.yml
/html/wp-config.php
/html/.htaccess
/html/.htpasswd
/html/index.php
/html/license.txt
/html/readme.html
/html/wp-*.php
/html/xmlrpc.php
/html/wp-admin/*
/html/wp-content/*
!/html/wp-content/themes
/html/wp-content/themes/*
!/html/wp-content/themes/simple
/html/wp-includes/*
/html/tool/*
wordpress\html\wp-content\themes\simple
テーマを配置
wordpress\docker\wordpress\Dockerfile
FROM wordpress:5-php7.2-apache
RUN apt-get update && \
docker-php-ext-install pdo_mysql mysqli mbstring
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
RUN usermod -u 1000 www-data && \
groupmod -g 1000 www-data
wordpress\docker\wordpress\php.ini
date.timezone = Asia/Tokyo
wordpress\docker\mysql\Dockerfile
FROM mysql:5.7
wordpress\docker\mysql\my.cnf
[mysqld]
character-set-server=utf8
wordpress\docker\mailhog\Dockerfile
FROM mailhog/mailhog
wordpress\docker-compose.yml
version: '3'
networks:
compose_network:
volumes:
compose_wordpress_data:
services:
mailhog:
container_name: mailhog
ports:
- 8025:8025
- 1025:1025
networks:
- compose_network
build: ./docker/mailhog
mysql:
container_name: mysql
volumes:
- ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf:ro
- compose_wordpress_data:/var/lib/mysql:rw
environment:
TZ: Asia/Tokyo
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_USER: user
MYSQL_PASSWORD: userpass
MYSQL_DATABASE: wordpress
networks:
- compose_network
build: ./docker/mysql
wordpress:
container_name: wordpress
volumes:
- ./docker/wordpress/php.ini:/usr/local/etc/php/conf.d/php.ini:ro
- ./html:/var/www/html
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: user
WORDPRESS_DB_PASSWORD: userpass
WORDPRESS_DB_NAME: wordpress
ports:
- 80:80
networks:
- compose_network
build: ./docker/wordpress
■設定の上書き
docker-compose.yml と同じ階層に docker-compose.override.yml を置くと、その設定内容が優先される
wordpress\docker-compose.yml
version: '3'
services:
mysql:
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_USER: user
MYSQL_PASSWORD: userpass
MYSQL_DATABASE: wordpress
wordpress:
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: user
WORDPRESS_DB_PASSWORD: userpass
WORDPRESS_DB_NAME: wordpress
■よく使用するコマンド
※初回は特に、起動まで時間がかかる
httpでアクセスできなくても、mysqlに接続できなくても、しばらく待てば解決することがある
$ cd docker/wordpress
$ docker-compose build … ビルドする場合(構成を変更した場合など)
$ docker-compose up -d … 起動
$ docker-compose down … 終了
$ docker container exec -it php bash … phpコンテナのターミナルに接続する場合
$ docker container exec -it mysql bash … mysqlコンテナのターミナルに接続する場合
$ mysql -u root -p … MySQLに接続
$ docker volume ls ... ボリュームを確認
$ docker volume rm compose_wordpress_data ... ボリュームを削除
■ブラウザからのアクセス
http://127.0.0.1/
http://127.0.0.1:8025/