UKey's Labo

wordpress + nginx + mysql環境をDockerで

動作環境

環境 バージョン
mac macOS Catalina 10.15.1
Docker Desktop for mac 2.1.0.4

概要

wordpress環境を、容量の大きなmampではなく、現在勉強中のDockerで構築してみました。

ディレクトリ構成

.
├── docker-compose.yml
└── nginx
      └── nginx.conf

docker-compose.yml

version: '3'
services:

  wp-db:
    image: mysql:5.7

    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

    volumes:
      - storage-mysql:/var/lib/mysql

    ports:
      - "3306:3306"

    environment:
      MYSQL_DATABASE     : wordpress # WORDPRESS_DB_NAMEと合わせる
      MYSQL_ROOT_PASSWORD: root      # ルートパスワード
      MYSQL_USER         : wpuser    # WORDPRESS_DB_USERと合わせる
      MYSQL_PASSWORD     : pass      # WORDPRESS_DB_PASSWORDと合わせる
      TZ                 : 'Asia/Tokyo'

  wp:
    image: wordpress:php7.3-fpm

    volumes:
      - ./wp:/var/www/html

    expose:
      - "9000"

    environment:
      WORDPRESS_DB_HOST     : wp-db     # mysqlコンテナを指定
      WORDPRESS_DB_USER     : wpuser    # MYSQL_USERと合わせる
      WORDPRESS_DB_PASSWORD : pass      # MYSQL_PASSWORDと合わせる
      WORDPRESS_DB_NAME     : wordpress # MYSQL_DATABASEと合わせる
      WORDPRESS_TABLE_PREFIX: basis

    links:
      - wp-db

  wp-nginx:
    image: nginx:1.17
    ports:
      - "80:80"

    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./wp:/var/www/html

    links:
      - wp # wordpress起動後でないとnginxがnot foundで落ちる

volumes:
  storage-mysql:

nginx.conf

events {
    worker_connections 1024;
}
http {
    include /etc/nginx/mime.types;
    charset UTF-8;

    server {
        listen 80;
        server_name _;

        root /var/www/html;
        index index.php;

        access_log /var/log/nginx/access.log;
        error_log  /var/log/nginx/error.log;

        location / {
            try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(\.+)$;
            fastcgi_pass wp:9000; # wordpressコンテナを指定する
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
        }
    }
}

コンテナの起動とセットアップ

docker-compose up -d --build

http://localhostにアクセスして、以下が表示されれば、成功です。

日本語を選択して、続行。

サイト情報を設定して、wordpressをインストール。

再度、http://localhostに接続して、wordpressが動いていることを確認。