Docker-Composeの環境にWordpressをインストールします。前回の記事では、Docker-ComposeでNginx+php+mysqlを連携しphpmyadminをインストールしました。その環境を使用してWordPressを追加インストールします。Docker公式のWordPressイメージはApache等とセットになっているので柔軟性に欠けると思い自前で準備することにしました。
目次
1.コンテナ一覧
今回使用するコンテナを一覧に整理しました。前回からの追加変更はありません。
NO | コンテナ
サービス名 |
用途 | 起動後状態 | 使用イメージ |
1 | sqldata | mysqlの永続データ保持 | 非常駐 | Busybox公式 |
2 | wwwdata | nginxの永続データ保持 | 非常駐 | Busybox公式 |
3 | nginx | nginxタスクとしてホスト80ポートをコンテナへフォワード | 常駐 | Buildイメージ |
4 | php | php-fpmタスク | 常駐 | Buildイメージ |
5 | db | mysqlタスク | 常駐 | mysql公式イメージ |
2.フォルダ構成
前回から引用です。今回はdata/wwwの下にwordpressを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
/home/docker/test/phpsql phpsql │ docker-compose.yml ├─data │ │ │ ├─mysql │ │ │ └─www │ ├─phpmyadmin │ └─wordpress │ ├─nginx │ Dockerfile │ server.conf │ └─php7 Dockerfile php.ini |
3.WordPress用DB作成
(1)スクリプト準備
WordPressで使用するDBを作成します。DBとDB接続用ユーザー作成スクリプトのサンプルがこちらです。
1 2 3 |
CREATE database db_wp_docker default character set utf8; GRANT ALL PRIVILEGES ON db_wp_docker.* TO wp_docker_usr@'%' IDENTIFIED BY 'XXXXXXXXXX' WITH GRANT OPTION; FLUSH PRIVILEGES; |
気をつけるのは、ログイン可能なユーザーを作成している2行目で「wp_docker_usr@’%‘」としているところです。phpとmysqlが同一サーバ又は同一のコンテナで動作しているのであればいつもの’localhost’とできます。がしかし、今回はコンテナ連携をしますのでサーバをピンポイントで指定するかサーバを限定しないワイルドカード’%‘にする必要があります。
うっかりlocalhostとしているとphpmyadminでログインできません。(当初これではまりました…)
(2)スクリプト実行
phpmyadminにrootでログインし作成したDBとDB接続用ユーザー作成スクリプトを実行します。実行する手順を順に画面イメージで説明します。
ログイン後SQLタブを選択して以下の画面を表示させます。
スクリプトをコピーして画面にペーストし、右下の実行ボタンを押します。
成功したら念のため、作成したユーザ―でphpmydminにログインできるか試しておきましょう。ログインできたなら次のWordpress導入に進みましょう。失敗した場合は、作成したスクリプトを見直してください。
4.WordPress導入
(1)インストール
当サイトの記事を参考にWordPressを導入します。今回の構成ではphpコンテナが参照するコンテンツデータはdata/www/にマウントされていますのでホスト側のフォルダにWordPressを配置すればコンテナ内から参照できます。最新版をダウンロードし解凍後配置します。
1 2 3 |
# wget https://ja.wordpress.org/latest-ja.tar.gz # tar xzfv latest-ja.tar.gz > /dev/null # mv wordpress /home/docker/test/phpsql/data/www/ |
(2)wp-config.phpの設定
サンプルの設定ファイルをコピーしてwp-config.phpとし必要な設定を記述します。カレントディレクトリは/home/docker/test/phpsql/dataの前提です。
1 |
# cp www/wordpress/wp-config-sample.php www/wordpress/wp-config.php |
コピーしたwp-config.phpの下記項目を修正します。
NO | DEFINE | 意味 | 初期値 | 設定値 |
1 | DB_NAME | WordPress用のDB名 | database_name_here | db_wp_docker(例) |
2 | DB_USER | DBに接続するユーザー名 | username_here | wp_docker_usr(例) |
3 | DB_PASSWORD | 接続ユーザーのパスワード | passwprd_here | hogehogepass(例) |
4 | DB_HOST | DBのあるホスト名 | localhost | phpsql_db_1(コンテナ名) |
5 | AUTH_KEY | 暗号化KEY | put your unique… | 32文字以上の任意値 |
6 | SECURE_AUTH_KEY | 暗号化KEY | put your unique… | 32文字以上の任意値 |
7 | LOGGED_IN_KEY | 暗号化KEY | put your unique… | 32文字以上の任意値 |
8 | NONCE_KEY | 暗号化KEY | put your unique… | 32文字以上の任意値 |
9 | AUTH_SALT | HASHSALT | put your unique… | 32文字以上の任意値 |
10 | SECURE_AUTH_SALT | HASHSALT | put your unique… | 32文字以上の任意値 |
11 | LOGGED_IN_SALT | HASHSALT | put your unique… | 32文字以上の任意値 |
12 | NONCE_SALT | HASHSALT | put your unique… | 32文字以上の任意値 |
13 | table_prefix | テーブル名の前に付加する文字列 | wp_ | 通常は初期値(1DBで複数のWordpressサイト運用時にユニーク値を設定する) |
wp-config.phpを修正すると所有権がrootになるので所有権を元に戻します。
1 |
# chown nobody:65534 www/wordpress/wp-config.php |
(3)オンライン設定
対象となるサーバに接続して設定を続けます。http://192.168.1.9/wordpress (IPアドレス値は環境に合わせる)にブラウザでアクセスします。下記画面画表示されます。
サイトのタイトル、ユーザー名、パスワードなどの必要な項目を入力して「WordPressをインストール」を押下します。インストールが終了したら設定したユーザーとパスワードでログインします。下記ダッシュボードが表示されます。
サンプル投稿を多少修正して保存します。
一度ブラウザを落として再度、http://192.168.1.9/wordpressにアクセスします。
修正したサンプル投稿が表示されました。WordPressをDockerコンテナ連携環境でセットアップできました。コンテナを終了させても作成した投稿データはデータボリュームコンテナ内で保持されます。
5.感想・課題
Dockerでコンテナを連携させてWordpressを動作させるだけなら思ったよりも簡単でした。テスト環境としてならこれでも十分ですが、実運用するとなるとコンテナとホストのアクセス権の設定や、各コンテナで出力するログの管理などまだまだ課題が残ります。今後はこの辺を探っていきたいと思います。