参考:
--->[ホストのApache]--->[WordPressコンテナ]<---->[MYSQLコンテナ]
WordPress用に新しくサブドメインを登録する。
そのサブドメインにアクセスしてきたら、Apacheに設定したリバースプロキシでWordPressコンテナに通信を転送する。
また、SSL証明書はホスト上のApacheにて設定する。
このページに書かれている方法でサブドメインを登録する。サブドメイン参考
以下では「abc.example.com」を例に記載する。
下記のコマンドを実行してSSL証明書を発行する。
$ certbot certonly --webroot -w <ドキュメントルート> -d abc.example.com
「/etc/httpd/conf.d/ssl.conf」に下記を追記する。
<VirtualHost abc.example.com:443> ServerName wp.sirokujira.com SSLEngine on SSLProtocol all SSLCertificateFile <証明書の絶対パス>/cert.pem SSLCertificateKeyFile <証明書の絶対パス>/privkey.pem SSLCertificateChainFile <証明書の絶対パス>/chain.pem ProxyPreserveHost On ProxyPass / http://localhost:8082/ ProxyPassReverse / http://localhost:8082/ RequestHeader set X-Forwarded-Proto "https" ※1 RequestHeader set X-Forwarded-Port "443" ※1 </VirtualHost> ※1. この設定がないと、混在コンテンツとなりjavascriptやcss等が正常に読み込まれない
設定ファイルを編集後、下記のApacheを再起動する。
$ sudo systemctl restart httpd
任意のディレクトリで下記内容の「docker-compose.yml」を作成する。
version: '3'
services:
wordpress:
image: wordpress:php8.0-apache
container_name: wordpress
ports:
- 8082:80
volumes:
- ./wp-data:/var/www/html
environment:
WORDPRESS_DB_HOST: wordpress-db
WORDPRESS_DB_USER: <ユーザ名>
WORDPRESS_DB_PASSWORD: <パスワード>
WORDPRESS_DB_NAME: <DB名>
depends_on:
- wordpress-db
restart: always
wordpress-db:
image: mysql:8.0
container_name: wordpress-db
ports:
- 3308:3306
environment:
TZ: Asia/Tokyo
MYSQL_ROOT_PASSWORD: <ルートパスワード>
MYSQL_DATABASE: <DB名>
MYSQL_USER: <ユーザ名>
MYSQL_PASSWORD: <パスワード>
volumes:
- ./db-data:/var/lib/mysql
command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
restart: always
$ docker-compose up -d
コマンド実行後、WordPress と MySQL の接続に数十秒かかる。
その後、「https://abc.example.com」にアクセスして、WordPressのインストール画面が表示されること