環境構築

参考:

環境
構成
--->[ホストのApache]--->[WordPressコンテナ]<---->[MYSQLコンテナ]
方針

WordPress用に新しくサブドメインを登録する。

そのサブドメインにアクセスしてきたら、Apacheに設定したリバースプロキシでWordPressコンテナに通信を転送する。

また、SSL証明書はホスト上のApacheにて設定する。

サブドメイン登録

このページに書かれている方法でサブドメインを登録する。サブドメイン参考

以下では「abc.example.com」を例に記載する。

SSL証明書の発行

下記のコマンドを実行してSSL証明書を発行する。

$ certbot certonly --webroot -w <ドキュメントルート> -d abc.example.com
Apacheの設定

「/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 の作成

任意のディレクトリで下記内容の「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のインストール画面が表示されること