Docker での WORDPRESS 立ち上げ

動作環境

WordPress をコンテナで立ち上げる。
同一サーバで別のWebアプリも動作させているので、ホスト上でNGINXを稼働させる。
WordPress用のサブドメインを設定して、コンテナでWordPressを稼働させてNGINXからWordPressにつなぐ。
DBは、MySQLとして、WordPressと同様にコンテナで稼働させて、DockerComposeで起動する。

WordPress dockerコンテナ( FPM版 )
DB MySQL dockerコンテナ
webサーバNGINX ホスト上で稼働

設定

docker-compose.yaml

基本的には、公式をベースに作成する。
ポイントは、/var/www/html をホストに作成して、volumes でつなぐ。

設定ファイルができたら、docker compose up -d で起動させたらひとまずOK。

version: '3'

services:
  mysql:
    image: mysql:8.0.35-bullseye
    restart: always
    environment:
      MYSQL_DATABASE: WordPress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: pass
      MYSQL_ROOT_PASSWORD: rootpass
      TZ: Asia/Tokyo
    volumes:
      - db_data:/var/lib/mysql
    expose:
      - "3306"
    networks:
      wordpress_net:
        ipv4_address: 172.99.0.2

  wordpress:
    depends_on:
      - mysql
    image: wordpress:6.4.2-php8.1-fpm
    links: 
      - mysql
    restart: always
    volumes:
      - /var/www/html:/var/www/html
    environment:
      WORDPRESS_DB_HOST: 172.99.0.2:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: pass
      WORDPRESS_DB_NAME: WordPress
      PHP_ERROR_LOG: /var/log/php-fpm/error.log
      TZ: Asia/Tokyo
    networks:
      wordpress_net:
        ipv4_address: 172.99.0.3
    ports:
      - "9000:80"

networks:
  wordpress_net:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.99.0.0/24

volumes:
  db_data:

NGINX blog.conf

サブドメインに対応したsever定義を.conf に定義する。
upstream で WordPressのコンテナとつなぐ。
fastcgi のパラメータについて、追加の定義をしておくことと、php と php 以外でWordPressアプリに渡すものと渡さないものを定義してしまうと良い。

upstream wordpress_php {
    server 172.99.0.3:9000;
}

server{
    listen       443 ssl;
    server_name  blog.k.com;

    # データ転送サイズ上限値(デフォルトは1M)
    client_max_body_size 1m;
    ssl_session_timeout	15m;

    #サーバー証明書
    ssl_certificate       /fullchain.pem;
    ssl_certificate_key   /privkey.pem;

    ssl_protocols TLSv1.3;
    ssl_ciphers ;
    
    # WORDPRESSと同様のパスで、docker の volume で連鎖させる
    root     /var/www/html;

    # WORDPRESS 用設定
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi_params;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;
        fastcgi_intercept_errors on;
        fastcgi_read_timeout 60s;
        proxy_set_header X-Forwarded-Proto $scheme;
        fastcgi_pass wordpress_php;
    }
}

fastcgi_params

WordPressで、どこまでの定義が必要なのかは確認をしていないが、以下の設定値で動いてはいる。

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP 用の設定
fastcgi_param  PHP_FLAG           "session.auto_start=off \n suhosin.session.cryptua=off";
fastcgi_param  PHP_VALUE          "max_execution_time=60 \n session.gc_maxlifetime=10800";

# Custom headers for PHP
fastcgi_param  HTTP_AUTHORIZATION $http_authorization;
fastcgi_param  HTTP_USER_AGENT    $http_user_agent;
fastcgi_param  HTTP_X_REAL_IP     $remote_addr;

NGINX をリスタート( sudo systemctl restart nginx ) させて、https://blog.k.com にアクセス。
WordPressの初期設定が始まる。

Xserver が お友達紹介割引 で申込みが可能になります。

コメント

タイトルとURLをコピーしました