#DockerのWordPressイメージを公開します。
もし有用なら、GitHub や Docker hub で星を付けて頂けると励みになります。
※現在CentOSベースで作成していますが、Rocky Linuxに移行する予定です。
https://github.com/takeyamajp/docker-wordpress
このDockerイメージを使って、いつでも完成度の高いWordPress環境を気軽に作り出す事ができます。
サイト構築やプラグインのテスト環境として最適です。
また、個人レベルの小規模サイトであれば実運用にも耐えられます。
関連するDockerイメージとして、データベース用のMySQL, MariaDB, phpMyAdminなどのイメージも公開しています。
https://github.com/takeyamajp/docker-mysql
https://github.com/takeyamajp/docker-mariadb
https://github.com/takeyamajp/docker-phpmyadmin
また、WordPressで使用する送信専用メールサーバーには以下のDockerイメージがお勧めです。
https://github.com/takeyamajp/docker-postfix
https://qiita.com/takeyamajp/items/be4ccc61862de3b121bf
#概要
このDockerイメージには、以下のような特徴があります。
・タイムゾーンを設定する事ができる。
・httpをhttpsに自動リダイレクトさせる事ができる。
・GZIP圧縮をサポートしている。
・BASIC認証をサポートしている。
・WordPressの基本設定を、このDockerイメージの変数から行う事ができる。
・php-fpmで動作する。
FROM centos:centos8
...
ENV TIMEZONE Asia/Tokyo
ENV FORCE_SSL true
ENV GZIP_COMPRESSION true
ENV BASIC_AUTH false
ENV BASIC_AUTH_USER user
ENV BASIC_AUTH_PASSWORD password
ENV HTTPD_SERVER_ADMIN root@localhost
ENV HTTPD_LOG true
ENV HTTPD_LOG_LEVEL warn
ENV HTTPD_PHP_ERROR_LOG true
ENV WORDPRESS_DB_HOST mysql
ENV WORDPRESS_DB_NAME db
ENV WORDPRESS_DB_USER user
ENV WORDPRESS_DB_PASSWORD password
ENV WORDPRESS_TABLE_PREFIX wp_
ENV WORDPRESS_DEBUG false
ENV WORDPRESS_CONFIG_EXTRA param1,param2
ENV WORDPRESS_CONFIG_EXTRA_VALUE \'string\',true
VOLUME /wordpress
EXPOSE 80
EXPOSE 443
#実行方法
最もシンプルな実行方法を紹介します。
以下のyml
ファイルを作成してDocker-Composeで実行してください。
(takeyamajp/mysql
の部分は、takeyamajp/mariadb
に置き換えることができます。)
その後、任意のブラウザーからhttp://localhost:8080/
、もしくはhttp://サーバーのIPアドレス:8080/
にアクセスしてください。
(MySQLやMariaDBの初期化処理に数十秒~数分間待つ必要があります。)
version: '3.1'
services:
wordpress:
image: takeyamajp/wordpress
ports:
- "8080:80"
environment:
FORCE_SSL: "false"
mysql:
image: takeyamajp/mysql
#各種設定
##タイムゾーン(TIMEZONE)
サイトで扱われる日時のタイムゾーン設定です。
Linuxで設定可能なタイムゾーンをそのまま設定する事ができます。
日本国内で使用する場合は、設定を変更する必要はありません。
##SSL通信の強制(FORCE_SSL)
httpでアクセスした場合に、自動的にhttpsにリダイレクトする設定です。
簡易のテスト環境を用意する場合など、このDockerイメージを単体で動作させるときは、上記のdocker-compose.yml
ファイルのようにfalse
に設定してください。
リバースプロキシのバックエンドとして動作させる場合はtrue
に設定してください。
(リバースプロキシとhttps通信するためにイメージ内に自己署名のSSL証明書を自動作成します。)
##GZIP圧縮(GZIP_COMPRESSION)
サイトの表示速度を向上させるために、GZIP圧縮を有効にする設定です。
通常は設定を変更する必要はありません。
##BASIC認証(BASIC_AUTH)
一部の人だけがサイトにアクセスできるようにBASIC認証をかける事ができます。
前述のFORCE_SSL
がtrue
になっている場合は、先にhttpsにリダイレクトされた後にBASIC認証が要求されるため、ネット上で認証情報を平文でやりとりする事はありません。
##サーバーの管理者情報(HTTPD_SERVER_ADMIN)
サーバー上でエラーが発生した場合に、エラーページに表示する問い合わせ先情報です。
本番運用する場合は、連絡先のメールアドレスを設定してください。
https://httpd.apache.org/docs/2.4/ja/mod/core.html#serveradmin
##サーバーのログ出力
このDockerイメージで出力されるログは、すべてDocker logsに出力します。
次のコマンドdocker logs -f wordpress
を実行すると、出力されるログをリアルタイムで確認する事ができます。
HTTPD_LOG
WEBサーバーのログ出力をするかどうかの設定です。
通常は変更する必要はありません。
出力内容を増減させたい場合は、後述するHTTPD_LOG_LEVEL
を変更してください。
HTTPD_LOG_LEVEL
WEBサーバーのログ出力レベルを8段階で設定します。
通常は変更する必要はありません。
https://httpd.apache.org/docs/2.4/ja/mod/core.html#loglevel
HTTPD_PHP_ERROR_LOG
PHPプログラムでエラーが発生した場合にログ出力するかどうかの設定です。
WordPress、プラグインなどでエラーが発生した場合にログが出力されます。
通常は変更する必要はありません。
##WordPressのデータベース設定
ここで事前にデータベース設定をしておけば、初回起動時にデータベースの接続情報を手入力する必要はありません。
WORDPRESS_DB_HOST
データベースのホスト名(Dockerのコンテナ名)を設定します。
WORDPRESS_DB_NAME
データベース名を設定します。
データベースのコンテナと設定を合わせる必要があります。
WORDPRESS_DB_USER
データベースのユーザー名を設定します。
データベースのコンテナと設定を合わせる必要があります。
WORDPRESS_DB_PASSWORD
データベースユーザーのパスワードを設定します。
データベースのコンテナと設定を合わせる必要があります。
WORDPRESS_TABLE_PREFIX
データベースのテーブル名で使用される接頭辞です。
通常は設定を変更する必要はありません。
1つのデータベースに2つ以上のWordPressデータを保存するときに、WordPressのコンテナ毎に設定を変えてください。
##WordPressの追加設定
wp-config.php
に自動追加される設定です。
多くの場合、手動でWordPressの設定ファイルを編集する必要は無いでしょう。
例えば、サンプルとして用意されているデフォルト設定では、wp-config.php
の先頭に以下の行が自動追加されます。
// BEGIN CONFIG EXTRA
define('param1', 'string');
define('param2', true);
// END CONFIG EXTRA
WORDPRESS_CONFIG_EXTRA
カンマ区切りでパラメータ名を設定します。
WORDPRESS_CONFIG_EXTRA_VALUE
カンマ区切りでパラメータの値を設定します。
文字列を設定する場合は、カンマ文字をエスケープしてください。
##WordPressのデータを永続化する。
必要に応じて、任意のディレクトリをボリューム/wordpress
にマウントしてください。
新規の環境を構築する場合は、空ディレクトリをマウントしてください。
既存のWordPressディレクトリをマウントする事で、他の環境からファイルデータを引き継ぐ事ができます。
##WordPressのデバッグ設定
WORDPRESS_DEBUG
WordPress自体のデバッグを行う場合にtrue
に設定してください。
通常は使用しません。
—
以上です。
それでは良いWordPressライフを。