[Web][Docker] HTTPS な WordPress を立ち上げる docker-compose.yml

HTTPS な WordPress を立ち上げるための docker-compose.yml です。

環境&対象

以下の環境で動作確認を行なっています。

  • Ubuntu 18.04 LTS server
  • docker 20.10.8

HTTPS 対応な WordPress を立ち上げる

HTTPS アクセスできる WordPress を立ち上げるための docker-compose.yml です。

検索してもそのものずばりがあまり見つからなかったので、メモしておきます。(直した方が良い設定ありましたら、教えてもらえると助かります)


version: '3'

services:
 https-portal:
  image: steveltn/https-portal:1
  ports:
    - '80:80'
    - '443:443'
  links:
    - wordpress
  restart: always
  environment:
    DOMAINS: 'ドメイン -> http://wordpress:80'
    STAGE: 'production' # Don't use production until staging works
    CLIENT_MAX_BODY_SIZE: 200M
    # FORCE_RENEW: 'true'
  volumes: 
    - https-portal-data:/var/lib/https-portal

 wordpress:
  image: wordpress
  restart: always
  environment:
   WORDPRESS_DB_HOST: db
   WORDPRESS_DB_USER: <ユーザー名>
   WORDPRESS_DB_PASSWORD: <パスワード>
   WORDPRESS_DB_NAME: WordPressDB
  volumes:
    - wordpress:/var/www/html

 db:
  image: mysql:5.7
  restart: always
  environment:
    MYSQL_DATABASE: WordPressDB
    MYSQL_USER: <ユーザー名>
    MYSQL_PASSWORD: <パスワード>
    MYSQL_RANDOM_ROOT_PASSWORD: '1'
  volumes:
    - db:/var/lib/mysql

volumes:
  https-portal-data:
  wordpress:
  db:

オリジナルサンプルから変更した点

ちなみに、オリジナルはこちら

STAGE: 'production'

動作確認中はコメントアウトしてましたが、動作確認できたので、production にして運用してます。

ドメイン名が引ける状態で、自サーバーにたどり着けることが必要です。

それぞれのボリュームを明確化

それぞれのコンテナのボリュームを明確化して使うようにしました。

CLIENT_MAX_BODY_SIZE を増やす

アップロードできるファイルサイズに制限があるといろいろと手間なので、増やしました(数値に大きな意味はありません)

MEMO
この設定は、https-portal 側の設定なので、以下のような WordPress側の設定も必要です。


% sudo docker exec -i -t <wordpress container id> /bin/bash
# cd /usr/local/etc/php/conf.d
# cat > uploads.ini
upload_max_filesize = 200M;
post_max_size = 200M;

container を停止して作業する必要があります。

mysql を使用

mariadb のままでも良かったのですが、なんとなく置き換えました。

まとめ:HTTPS な WordPress を立ち上げるための docker-compose.yml

HTTPS な WordPress を立ち上げるための docker-compose.yml
  • https-portal を使うと本当に簡単
  • CLIENT_MAX_BODY_SIZE を設定しておくと、バックアップからの復元等に便利

説明は以上です。
不明な点やおかしな点ありましたら、こちらまで。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です