概要
Docker Composeを使用してLNMP(Linux, Nginx, MySQL, PHP)スタックをオーケストレーションし、WordPressをデプロイする手法を解説します。各コンポーネントを個別のコンテナとして構築し、連携させる方法を紹介します。
前提条件
- Dockerがインストールされていること
- Docker Composeが利用可能であること
プロジェクト構造
以下のディレクトリとファイルを作成します。
project-root/
├── docker-compose.yaml
├── nginx-config/
│ ├── Dockerfile
│ └── site.conf
├── php-runtime/
│ └── Dockerfile
└── wordpress-app/
├── Dockerfile
└── config.php
Nginxコンテナの設定
nginx-config/Dockerfile
FROM nginx:alpine
COPY site.conf /etc/nginx/conf.d/default.conf
nginx-config/site.conf
server {
listen 80;
server_name localhost;
root /app/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass php-app:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
PHP-FPMコンテナの設定
php-runtime/Dockerfile
FROM php:7.4-fpm
RUN docker-php-ext-install mysqli pdo_mysql
WordPressアプリケーションコンテナの設定
wordpress-app/Dockerfile
FROM wordpress:latest
COPY config.php /usr/src/wordpress/wp-config.php
wordpress-app/config.php
<?php
define('DB_NAME', 'wp_database');
define('DB_USER', 'db_user');
define('DB_PASSWORD', 'secure_password');
define('DB_HOST', 'database');
define('DB_CHARSET', 'utf8mb4');
define('AUTH_KEY', 'generate_unique_string');
define('SECURE_AUTH_KEY', 'generate_unique_string');
define('LOGGED_IN_KEY', 'generate_unique_string');
define('NONCE_KEY', 'generate_unique_string');
define('AUTH_SALT', 'generate_unique_string');
define('SECURE_AUTH_SALT', 'generate_unique_string');
define('LOGGED_IN_SALT', 'generate_unique_string');
define('NONCE_SALT', 'generate_unique_string');
$table_prefix = 'wp_';
if (!defined('ABSPATH')) {
define('ABSPATH', __DIR__ . '/');
}
require_once(ABSPATH . 'wp-settings.php');
Docker Compose設定ファイル
docker-compose.yaml
version: '3.8'
services:
web-server:
build:
context: ./nginx-config
ports:
- "8080:80"
volumes:
- ./wordpress-app:/app
depends_on:
- app-server
- database
app-server:
build:
context: ./php-runtime
volumes:
- ./wordpress-app:/app
database:
image: mysql:8.0
volumes:
- db-storage:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root_pass
MYSQL_DATABASE: wp_database
MYSQL_USER: db_user
MYSQL_PASSWORD: secure_password
cms:
build:
context: ./wordpress-app
volumes:
- ./wordpress-app:/app
depends_on:
- database
volumes:
db-storage:
環境の起動
プロジェクトのルートディレクトリで以下のコマンドを実行します。
docker-compose up --build -d
すべてのサービスが起動した後、ブラウザで http://localhost:8080 にアクセスし、WordPressの初期設定を進めることができます。