目次
はじめに
QNAPのContainerStationでDockerを使ってWordPressを運用していると、「新しいサイトを追加したいけど既存のサイトに影響が出ないか不安」という場面があります。
この記事では、既存のコンテナに一切触れずに新しいWordPressコンテナを追加する手順を解説します。
分離構成(サイトごとに独立したフォルダ・docker-compose.yml)を採用しているため、新しいサイトの追加は既存サイトへの影響がありません。
この記事でわかること
- 既存サイトへの影響ゼロで新しいWordPressを追加する方法
- テスト用WordPressをローカルIPでアクセスできる状態にする手順
- 本番公開に向けてNginxとCloudflare Tunnelに追加する方法
環境
- QNAP NAS(ContainerStation インストール済み)
- 分離構成でWordPressを運用中
- SSH接続ソフト:TeraTerm
分離構成への移行手順はこちら [QNAPのDockerで複数WordPressを分離構成に移行する方法]
現在のフォルダ構成
docker/
├── shared/ ← Nginx・Cloudflared・phpMyAdmin
├── your-site1/ ← 既存サイト1
├── your-site2/ ← 既存サイト2
├── your-site3/ ← 既存サイト3
└── site_test/ ← 今回新規追加
分離構成のため、site_test/フォルダを新規作成するだけで既存サイトに影響しません。
Step 1:新しいサイト用フォルダを作成する
SSHで接続して新しいフォルダを作成します。
SSHの有効化手順はこちら [QNAPのCloudflaredをSSHでアップデートする方法]
mkdir -p /share/CACHEDEV4_DATA/docker/site_test
cd /share/CACHEDEV4_DATA/docker/site_test

Step 2:docker-compose.ymlを作成する
WordPressとMariaDBだけのシンプルな構成で作成します。
nanoでもvimでも構いません。
cat > /share/CACHEDEV4_DATA/docker/site_test/docker-compose.yml << 'EOF'
services:
mariadb_test:
image: mariadb:10.11
container_name: mariadb_test
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: wp_test
MYSQL_USER: your_user
MYSQL_PASSWORD: your_password
volumes:
- ./db_data:/var/lib/mysql
wordpress_test:
image: wordpress:php8.2-apache
container_name: wordpress_test
restart: unless-stopped
ports:
- "8090:80"
environment:
WORDPRESS_DB_HOST: mariadb_test
WORDPRESS_DB_USER: your_user
WORDPRESS_DB_PASSWORD: your_password
WORDPRESS_DB_NAME: wp_test
volumes:
- ./html:/var/www/html
depends_on:
- mariadb_test
EOF
echo "done"

ポイント:
| 設定 | 内容 |
|---|---|
ports: "8090:80" | ホストの8090番ポートをコンテナの80番に転送 |
depends_on | MariaDBが起動してからWordPressを起動する |
volumes: ./db_data | データベースのデータをホストに保存(コンテナ削除後もデータ保持) |
volumes: ./html | WordPressのファイルをホストに保存 |
ポート番号について 既存サイトで使用中のポートと重複しないように注意してください。 既存サイトのポートは
docker psで確認できます。
パスワードについて テスト用でも推測されにくいパスワードを使用してください。 本番環境に移行する際は必ず変更してください。
Step 3:コンテナを起動する
docker compose up -d

実行結果の例:
✔ Container mariadb_test Started 1.1s
✔ Container wordpress_test Started 2.1s
Step 4:動作確認
ブラウザでアクセスする
ブラウザで以下のURLにアクセスします:
http://QNAPのIPアドレス:8090 (例:192.168.0.xxx)

WordPressのインストール画面が表示されれば成功です。
ContainerStationで確認する

ContainerStationの「コンテナ」タブでmariadb_testとwordpress_testが「実行中」になっていることを確認します。
既存のコンテナは全て「実行中」のまま影響を受けていません。
Step 5:本番公開に向けた追加設定(ドメインがある場合)
テスト用として動作確認できたら、本番公開に向けて以下の設定を追加します。
① shared_proxyネットワークに接続する
本番公開する場合はNginxと通信できるようshared_proxyネットワークに接続します。
docker-compose.ymlに以下を追加します:
services:
mariadb_test:
...
networks:
- shared_proxy # 追加
wordpress_test:
...
ports: # 本番環境ではportsは不要(Nginx経由でアクセスするため)
- "8090:80" # 削除またはコメントアウト
networks:
- shared_proxy # 追加
networks:
shared_proxy:
external: true # 追加
② Nginxにサイトの設定ファイルを追加する
/share/CACHEDEV4_DATA/docker/shared/nginx/conf.d/your-new-site.confを作成します。
upstream wordpress_test {
server wordpress_test:80;
}
server {
listen 80;
server_name www.your-new-site.com;
return 301 https://your-new-site.com$request_uri;
}
server {
listen 443 ssl;
server_name your-new-site.com;
ssl_certificate /etc/certs/origin.crt;
ssl_certificate_key /etc/certs/origin.key;
location / {
proxy_pass http://wordpress_test;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Nginxをリロードします:
docker exec nginx_reverse_proxy_shared nginx -s reload
③ Cloudflare Tunnelのconfig.ymlにルートを追加する
/share/CACHEDEV4_DATA/docker/shared/cloudflared/config.ymlに追記します:
ingress:
- hostname: your-new-site.com
service: https://nginx_reverse_proxy_shared:443
originServerName: your-new-site.com
originRequest:
noTLSVerify: true
# 既存のルール...
- service: http_status:404
Cloudflaredを再起動します:
cd /share/CACHEDEV4_DATA/docker/shared
docker compose up -d --force-recreate cloudflared
Cloudflare Tunnelの詳しい設定はこちら [QNAPのDockerで1つのCloudflare Tunnelを使って複数サイトを運用する方法]
テスト用コンテナを削除する
テストが終わったらコンテナを削除できます。
cd /share/CACHEDEV4_DATA/docker/site_test
docker compose down
データも含めて完全に削除する場合:
docker compose down -v
rm -rf /share/CACHEDEV4_DATA/docker/site_test
⚠️ データの削除に注意
rm -rfは取り消しができません。必要なデータがないか確認してから実行してください。
まとめ
分離構成を採用しているため、新しいWordPressの追加は非常にシンプルです。
# 1. フォルダ作成
mkdir -p /share/CACHEDEV4_DATA/docker/site_test
cd /share/CACHEDEV4_DATA/docker/site_test
# 2. docker-compose.yml作成(WordPress + MariaDB)
# ポート番号は既存サイトと重複しないように設定
# 3. コンテナ起動
docker compose up -d
# 4. ブラウザで確認
# http://QNAPのIPアドレス:8090
既存サイトへの影響がゼロな理由:
- サイトごとに独立したフォルダ・docker-compose.ymlで管理している
- 新しいコンテナは独自のネットワーク(
site_test_default)で動作する - 既存コンテナのネットワークには接続していない
本番公開する際はNginxとCloudflare Tunnelに設定を追加するだけで対応できます。
