タイトルの通りdocker composeを使ってSSL-WordPressの本番環境を構築します。
カクカクシカジカありまして、Blogのサーバを移転する事としました。
まぁ実際のところ大した理由があるわけではないのですが。
それに伴い、せっかくだからdockerを使った環境にしたいなーと欲をかきはじめ、docker-composeファイルを作成しました。
https://github.com/wmapst/wmap_infrastructure_wordpress
docker-compose.ymlの中身は↓↓
version: '3.3'
services:
wordpress_db:
image: mysql:5.7
container_name: wordpress_db
restart: always
volumes:
- ./data:/var/lib/mysql
- ./mysql_conf/my.cnf:/etc/mysql/my.cnf
environment:
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASS}
MYSQL_DATABASE: ${DB_NAME}
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_USER_PASS}
TZ: 'Asia/Tokyo'
networks:
app_net:
ipv4_address: '172.18.0.2'
wordpress_php:
image: wordpress:5-fpm
container_name: wordpress_php
depends_on:
- wordpress_db
restart: always
volumes:
- ./wordpress:/var/www/html
environment:
WORDPRESS_DB_HOST: wordpress_db
WORDPRESS_DB_NAME: ${DB_NAME}
WORDPRESS_DB_USER: ${DB_USER}
WORDPRESS_DB_PASSWORD: ${DB_USER_PASS}
TZ: 'Asia/Tokyo'
networks:
app_net:
ipv4_address: '172.18.0.3'
wordpress_web:
image: nginx
container_name: wordpress_web
depends_on:
- wordpress_php
restart: always
volumes:
- ./nginx-conf/default.conf:/etc/nginx/conf.d/default.conf
- ./wordpress:/var/www/html
- ./web-logs:/var/log/nginx
environment:
TZ: 'Asia/Tokyo'
networks:
app_net:
ipv4_address: '172.18.0.4'
https-portal:
image: steveltn/https-portal:1
container_name: https-portal
depends_on:
- wordpress_web
ports:
- '80:80'
- '443:443'
restart: always
volumes:
- ./ssl_certs:/var/lib/https-portal
environment:
DOMAINS: '${HOST_DOMAIN} -> http://wordpress_web:80/'
STAGE: '${PRODUCTION_STAGE}'
CLIENT_MAX_BODY_SIZE: 64M
TZ: 'Asia/Tokyo'
networks:
app_net:
ipv4_address: '172.18.0.5'
networks:
app_net:
driver: bridge
ipam:
driver: default
config:
- subnet: '172.18.0.0/16'
このdocker-composeファイルを駆動させるためには、.envファイルが必要になります。
.envファイルは必ずdocker-compose.ymlと同階層に設置してください。
githubに上げているリポジトリにも.envファイルは含ませていますが中身の値を入れていません。
その為、ご利用の際はご自身でファイルを編集する必要があります。
ファイル内に記載する項目は.env.sample.production, .env.sample.staging, .env.sample.local を参照してください。
一応、↓にそれぞれのファイルの中身(サンプル)を記載しておきます。
.env.sample.production
DB_NAME=wordpress
DB_USER=wp_user
DB_USER_PASS=wp_passwd
DB_ROOT_PASS=root_passwd
HOST_DOMAIN=www.sample-wmapst.net
PRODUCTION_STAGE=production
.env.sample.staging
DB_NAME=wordpress
DB_USER=wp_user
DB_USER_PASS=wp_passwd
DB_ROOT_PASS=root_passwd
HOST_DOMAIN=st-www.sample-wmapst.net
PRODUCTION_STAGE=staging
.env.sample.local
DB_NAME=wordpress
DB_USER=wp_user
DB_USER_PASS=wp_passwd
DB_ROOT_PASS=root_passwd
HOST_DOMAIN=localhost
PRODUCTION_STAGE=local
また、nginxとmysqlの設定ファイルも付属させています。
ですが、とりあえず動かすという目的の元に作成されていますので、ご自身の環境に合わせて編集する事をオススメします。
※実際に本番環境として運用する際は、必ずセキュリティ面をご確認ください。