WordPress · 4 min read · Sep 10, 2025
Docker Composeを使用してWordPressをインストールする方法

WordPress CMS(コンテンツ管理システム)は、ユーザーがデジタルコンテンツを作成、管理、公開できる広く使用されているオープンソースプラットフォームです。主にウェブサイトやブログ向けに設計されています。2003年に最初にリリースされて以来、WordPressは世界で最も人気のあるCMSとなり、インターネット上のすべてのウェブサイトの40%以上を支えています。コーディングの経験がほとんどない個人でもプロフェッショナル品質のウェブサイトを構築・維持できるユーザーフレンドリーなインターフェースを提供しています。WordPressは非常にカスタマイズ可能で、数千のテーマやプラグインが利用可能で、その機能を拡張し、シンプルなブログから複雑なeコマースサイトまで幅広いニーズに対応しています。強力なコミュニティサポート、定期的なアップデート、広範なドキュメントにより、初心者と経験豊富な開発者の両方にとって信頼性が高く多用途な選択肢となっています。
Dockerは、軽量でポータブルなコンテナ内でアプリケーションのデプロイ、スケーリング、管理を自動化するために設計されたオープンソースプラットフォームです。2013年に導入されたDockerは、アプリケーションがどこにデプロイされても一貫した環境で実行できるようにすることで、ソフトウェア開発に革命をもたらしました。開発者のローカルマシン、オンプレミスのデータセンター、またはクラウド上であっても同様です。コンテナはアプリケーションとその依存関係、ライブラリ、設定ファイルをバンドルし、異なる環境での一貫したパフォーマンスを保証します。このコンテナ化により、開発ワークフローが簡素化され、コラボレーションが強化され、開発者がアプリケーションをシームレスに作成、共有、実行できるようになり、効率が向上します。Dockerのエコシステムには、Docker SwarmやKubernetesなどのコンテナオーケストレーション用のツールやサービスが含まれており、大規模なコンテナデプロイメントの管理を容易にし、現代のDevOpsプラクティスにおける基盤技術となっています。
このチュートリアルでは、Docker/Docker Composeを使用してWordPressをインストールする方法を学びます。Dockerを使用することで、希望するスタックのインストールプロセスが大幅に簡素化されます。同じ構成を使用して、複数のサーバーに迅速にWordPressをインストールできます。また、SSL経由でサイトを提供するために、データベース管理用のphpMyAdminツールとNginxプロキシサーバーもインストールします。
前提条件
- sudo権限を持つ非rootユーザーを持つLinuxサーバー。私たちはこのチュートリアルのためにUbuntu 24.04を実行しているサーバーを使用しています。
- サーバーを指す完全修飾ドメイン名(FQDN)。私たちの目的のために、WordPressサイトのドメイン名として
example.com、phpMyAdminサイトのためにphpmyadmin.example.comを使用します。 - すべてが更新されていることを確認してください。
$ sudo apt update - 基本的なユーティリティパッケージをインストールします。いくつかはすでにインストールされているかもしれません。
$ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
ステップ1 - ファイアウォールの設定
最初のステップはファイアウォールの設定です。Ubuntuにはデフォルトでufw(Uncomplicated Firewall)が付属しています。
ファイアウォールが実行中かどうかを確認します。
$ sudo ufw status次の出力が得られるはずです。
Status: inactiveSSHポートを許可して、ファイアウォールを有効にしたときに現在の接続が切断されないようにします。
$ sudo ufw allow OpenSSHHTTPおよびHTTPSポートも許可します。
$ sudo ufw allow http
$ sudo ufw allow httpsファイアウォールを有効にします。
$ sudo ufw enable
コマンドは既存のssh接続を中断する可能性があります。この操作を続行しますか(y|n)? y
ファイアウォールはアクティブで、システム起動時に有効になっていますファイアウォールの状態を再度確認します。
$ sudo ufw status同様の出力が表示されるはずです。
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)ステップ2 - DockerおよびDocker Composeのインストール
Ubuntu 22.04には古いバージョンのDockerが付属しています。最新バージョンをインストールするには、まずDocker GPGキーをインポートします。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgDockerリポジトリファイルを作成します。
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullシステムリポジトリリストを更新します。
$ sudo apt update最新バージョンのDockerをインストールします。
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin実行中であることを確認します。
$ sudo systemctl status docker
? docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2024-07-19 17:11:19 UTC; 3s ago
TriggeredBy: ? docker.socket
Docs: https://docs.docker.com
Main PID: 1163 (dockerd)
Tasks: 7
Memory: 21.9M
CPU: 221ms
CGroup: /system.slice/docker.service
??2803 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sockデフォルトでは、Dockerはroot権限を必要とします。dockerコマンドを実行するたびにsudoを使用しないようにするには、ユーザー名をdockerグループに追加します。
$ sudo usermod -aG docker $(whoami)この変更を有効にするには、サーバーからログアウトして同じユーザーとして再度ログインする必要があります。または、次のコマンドを使用します。
$ su - ${USER}ユーザーがDockerグループに追加されたことを確認します。
$ groups
navjot wheel dockerステップ3 - WordPress用のDocker Composeファイルを作成
私は/optにWordPressのインストール全体を行います。必要に応じて/varや/homeなどの別の場所を選択できます。
cd /optWordPress構成用のディレクトリを作成します。
$ mkdir wordpressディレクトリに移動します。
$ cd wordpress編集用にDocker Composeファイルを作成して開きます。
$ nano docker-compose.yml以下のコードを貼り付けます。
services:
wp:
image: wordpress:latest
container_name: wordpress-app
restart: unless-stopped
expose:
- 8080
volumes:
- ./config/php.conf.ini:/usr/local/etc/php/conf.d/conf.ini
- ./wp-app:/var/www/html
#- ./plugin-name/trunk/:/var/www/html/wp-content/plugins/plugin-name # プラグイン開発
#- ./theme-name/trunk/:/var/www/html/wp-content/themes/theme-name # テーマ開発
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: "${DB_NAME}"
WORDPRESS_DB_USER: "${DB_USER_NAME}"
WORDPRESS_DB_PASSWORD: "${DB_USER_PASSWORD}"
VIRTUAL_HOST: example.com
LETSENCRYPT_HOST: example.com
depends_on:
- db
links:
- db
wpcli:
image: wordpress:cli
container_name: wpcli_app
volumes:
- ./config/php.conf.ini:/usr/local/etc/php/conf.d/conf.ini
- ./wp-app:/var/www/html
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: "${DB_NAME}"
WORDPRESS_DB_USER: "${DB_USER_NAME}"
WORDPRESS_DB_PASSWORD: "${DB_USER_PASSWORD}"
depends_on:
- db
- wp
pma:
image: phpmyadmin/phpmyadmin
container_name: pma
restart: unless-stopped
environment:
# https://docs.phpmyadmin.net/en/latest/setup.html#docker-environment-variables
PMA_HOST: db
PMA_PORT: 3306
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
UPLOAD_LIMIT: 50M
VIRTUAL_HOST: phpmyadmin.example.com
LETSENCRYPT_HOST: phpmyadmin.example.com
expose:
- 8081
links:
- db:db
db:
image: mysql:latest
container_name: wordpressdb
restart: unless-stopped
command: [
'--default_authentication_plugin=mysql_native_password',
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_unicode_ci'
]
volumes:
- ./wp-data:/docker-entrypoint-initdb.d
- db_data:/var/lib/mysql
environment:
MYSQL_DATABASE: "${DB_NAME}"
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
MYSQL_USER: "${DB_USER_NAME}"
MYSQL_PASSWORD: "${DB_USER_PASSWORD}"
volumes:
db_data:ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。
私たちは2つのWordPressイメージをプルしています。一つはウェブサイト用で、もう一つはWP-CLIツール用です。両方のイメージはMySQL 8.0のDockerイメージに依存しています。ここでは、データベースの資格情報のための環境変数を設定しました。私たちは両方のコンテナのために2つのボリュームを作成しました。一つはWordPressサイトの公開ファイルを指し、もう一つはカスタムPHP.iniの場所を指します。また、Nginxの仮想ホストドメインとWordPressサイトのLet’s Encrypt SSLドメインのための環境変数も定義しました。
さらに環境変数を追加し、Dockerファイルにカスタムwp-config.phpデータを追加することができます。追加の環境変数については、WordPressのDockerHubページを参照してください。
次のイメージはphpMyAdmin用で、同じMySQLイメージに依存し、rootパスワードを使用して接続します。アップロード制限は50MBです。必要に応じて変更できます。WordPressサイトと同様に、Nginxの仮想ホストドメインとphpMyAdminサイトのLet’s Encrypt SSLドメイン名を定義しました。
最後のイメージはMySQLデータベース用です。デフォルトの認証方法と文字セットを設定するためにいくつかのコマンドを渡しました。データを保存するためのいくつかのボリュームを作成し、データベースの資格情報のための環境変数を設定しました。
次のステップは、Composeファイルで使用される変数のための環境ファイルを作成することです。編集用に環境ファイルを作成して開きます。
$ sudo nano .env以下のコードを貼り付けます。
DB_NAME=wordpress
DB_USER_NAME=username
DB_USER_PASSWORD=userpassword
DB_ROOT_PASSWORD=passwordファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。変数はお好みのユーザー名とパスワードに置き換えてください。
カスタムphp.iniファイルを使用してPHP設定をカスタマイズできます。
PHP設定用のフォルダーを作成します。
$ mkdir configphp.conf.iniファイルを作成して編集用に開きます。
$ nano config/php.conf.ini以下のコードを貼り付けます。必要に応じて値を調整してください。PhpMyAdminコンテナのアップロード制限は、このファイルで使用する値とは独立しています。
file_uploads = On
memory_limit = 500M
upload_max_filesize = 30M
post_max_size = 30M
max_execution_time = 600ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。
ステップ4 - Nginx用のDocker Composeを更新
Nginx設定用のディレクトリを作成します。
$ mkdir nginxそのディレクトリ内に仮想ホスト用のディレクトリを作成します。
$ mkdir nginx/vhostnginx/vhost/wordpress.example.comを編集用に作成して開きます。
$ nano nginx/vhost/wordpress.example.com以下のコードを貼り付けます。
server_tokens off;
client_max_body_size 30m;ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。
nginx/vhost/phpmyadmin.example.comファイルについても同様の操作を行います。
$ nano nginx/vhost/phpmyadmin.example.com以下のコードを貼り付けます。
server_tokens off;
client_max_body_size 50m;ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。
再度Docker Composeファイルを開きます。
$ nano docker-compose.ymlvolumes: db_data:行の前に以下のコードを貼り付けます。
nginx:
container_name: nginx
image: nginxproxy/nginx-proxy
restart: unless-stopped
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./nginx/html:/usr/share/nginx/html
- ./nginx/certs:/etc/nginx/certs
- ./nginx/vhost:/etc/nginx/vhost.d
logging:
options:
max-size: "10m"
max-file: "3"ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。
上記のコードでは、NginxプロキシDockerイメージをプルし、ホストコンテナにポート80と443を公開します。これらは外部と接続するために使用されます。また、NginxのHTMLページ、すべてのSSL証明書が保存されるディレクトリ、および上記で使用した仮想ホスト用のディレクトリのためのボリュームを作成しました。WordPressとphpMyAdminサイトのファイルアップロードサイズを設定しました。サイトのドメイン名は、前のステップで定義した環境変数から取得されます。
ステップ5 - SSL用にDocker Composeを更新
Docker Composeファイルを編集用に開きます。
$ nano docker-compose.ymlvolumes: db_data:行の前に以下のコードを貼り付けます。
acme-companion:
container_name: acme-companion
image: nginxproxy/acme-companion
restart: unless-stopped
volumes_from:
- nginx
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./nginx/acme:/etc/acme.sh
environment:
DEFAULT_EMAIL: [email protected]ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。
ここでは、Nginxプロキシと連携して動作するAcme companion Dockerイメージをプルしています。Nginxコンテナからボリュームをプルします。また、Let’s Encrypt SSLに関するすべての設定を保存するacme.shツールのためのボリュームを定義します。最後に、Let’s EncryptでSSL証明書を登録するための環境変数を定義します。
ステップ6 - WordPressを起動してインストール
すべての設定ファイルが完了したので、コンテナを起動して立ち上げる時が来ました。
$ docker compose up -d数分待ってから、コンテナの状態を確認します。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c1e8a9b5169d nginxproxy/acme-companion "/bin/bash /app/entr…" 14 seconds ago Up 7 seconds acme-companion
8a37c78ff790 wordpress:latest "docker-entrypoint.s…" 14 seconds ago Up 7 seconds 80/tcp, 8080/tcp wordpress-app
4f9c777c97c2 phpmyadmin/phpmyadmin "/docker-entrypoint.…" 14 seconds ago Up 7 seconds 80/tcp, 8081/tcp pma
1b1dede46b07 nginxproxy/nginx-proxy "/app/docker-entrypo…" 14 seconds ago Up 11 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nginx
b9cf64a2f4a3 mysql:latest "docker-entrypoint.s…" 14 seconds ago Up 11 seconds 3306/tcp, 33060/tcp wordpressdbURL https://example.comを開いてWordPressインストーラーを開始します。

言語を選択し、次のページに進むために続行ボタンをクリックします。

サイトの詳細を入力し、ユーザー名、パスワード、メールアドレスを選択して、インストールを開始するためにWordPressをインストールボタンをクリックします。

インストール成功ページに移動します。ログインボタンをクリックしてログインページに移動します。

ログイン情報を入力し、ログインボタンをクリックしてWordPressダッシュボードを開きます。

これでWordPressを使用開始できます。
ステップ7 - PhpMyAdminにアクセス
URL https://phpmyadmin.example.comを介してphpMyAdminにアクセスできます。

ユーザー名としてrootを入力し、rootパスワードを入力してログインをクリックしてダッシュボードを開きます。

これでphpMyAdminを使用開始できます。
ステップ8 - WP-CLIにアクセス
次のコマンドを使用してWP-CLIにアクセスできます。
$ docker compose run --rm wpcli cli version次の出力が得られます。
[+] Running 2/0
? Container wordpressdb Running 0.0s
? Container wordpress-app Running 0.0s
WP-CLI 2.7.1毎回この長いコマンドを入力しないように、Linuxのエイリアス機能を使用できます。
$ alias wp="docker compose -f ~/wordpress/docker-compose.yml run --rm wpcli"これで、コンテナ内のどこからでも次のコマンドを入力できます。
$ wp cli versionLinuxのエイリアスは一時的です。エイリアスを永続的にするには、~/.bashrcファイルを編集する必要があります。編集用に開きます。
$ nano ~/.bashrcファイルの最後に次の行を貼り付けます。
# カスタムエイリアス
alias wp="docker compose -f ~/wordpress/docker-compose.yml run --rm wpcli"ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。
ファイルをソースして設定を再読み込みします。
$ source ~/.bashrcWP-CLIを使用開始できます。
ステップ9 - WordPressのバックアップ
WordPressをバックアップする方法はいくつかあります。最も簡単な方法はプラグインを使用することです。そのためのプラグインがいくつかあります。また、phpMyAdminを使用してバックアップを作成することもできます。
コマンドラインを使用してWordPressデータベースをバックアップすることもできます。WordPressディレクトリに移動します。
$ cd ~/wordpress次のコマンドを使用してWordPressデータベースをバックアップします。MySQLのrootパスワードを求められます。
$ docker compose exec db sh -c "exec mysqldump wordpress -uroot -p" | sudo tee wp-data/data_`date +%d-%m-%Y"_"%H_%M_%S`.sql >/dev/null
Enter password: password上記のコマンドは、~/wordpress/wp-dataディレクトリにSQLバックアップを作成します。
ディレクトリの内容を確認します。
$ ls -al wp-data
total 908
drwxr-xr-x 2 root root 4096 Jan 11 10:15 ./
drwxrwxr-x 6 navjot navjot 4096 Jan 11 10:05 ../
-rw-r--r-- 1 root root 919814 Jan 11 10:14 data_11-01-2023_10_14_40.sqlディレクトリにバックアップされたデータベースが表示されます。このデータベースはphpMyAdminツールを使用して復元することも、次のコマンドを使用して復元することもできます。
$ docker compose exec db sh -c "exec mysql -uroot -p" < wp-data/data_11-01-2023_10_14_40.sql定期的にデータベースをバックアップするためにcronジョブを作成できます。
/etc/cron.dailyディレクトリにバックアップスクリプトを作成し、編集用に開きます。
$ sudo nano /etc/cron.daily/wpbackup.sh以下のコードを貼り付けます。
#!/bin/bash
docker compose exec db sh -c "exec mysqldump wordpress -uroot -p" | tee wp-data/data_`date +%d-%m-%Y"_"%H_%M_%S`.sql >/dev/nullファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。
スクリプトを実行可能にします。
$ sudo chmod +x /etc/cron.daily/wpbackup.shこれで、データベースは毎日バックアップされます。
ステップ10 - WordPressのアップグレード
WordPressをアップグレードする最も簡単な方法は、内蔵のアップデーターを使用することです。また、Dockerを使用してアップグレードすることもできます。最初のステップは、ステップ9のコマンドを使用してWordPressデータベースをバックアップすることです。
次に、ディレクトリに移動します。
$ cd ~/wordpressコンテナを停止します。
$ docker compose down --remove-orphans最新のコンテナイメージをプルします。
$ docker compose pull必要に応じてdocker-compose.ymlに変更を加えます。 WordPressコンテナを再起動します。
$ docker compose up -d結論
これで、Docker Compose、phpMyAdmin、WP-CLIを使用してWordPressをインストールする方法に関するチュートリアルは終了です。質問がある場合は、下のコメントに投稿してください。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。