タイトルの通り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の設定ファイルも付属させています。

    ですが、とりあえず動かすという目的の元に作成されていますので、ご自身の環境に合わせて編集する事をオススメします。

    ※実際に本番環境として運用する際は、必ずセキュリティ面をご確認ください。