Docker Composeを使用してWordPressをインストールする方法
Docker Composeを使用してWordPressをインストールする方法
このチュートリアルはこれらのOSバージョンのために存在します
- Ubuntu 24.04 (ノーブル・ナンバット)
- Ubuntu 16.04 (ゼニアル・ゼクス)
このページで
- 前提条件
- ステップ1 - ファイアウォールを設定する
- ステップ2 - DockerとDocker Composeをインストールする
- ステップ3 - WordPressのためのDocker Composeファイルを作成する
- ステップ4 - NginxのためのDocker Composeを更新する
- ステップ5 - SSL用にDocker Composeを更新する
- ステップ6 - WordPressを開始してインストールする
- ステップ7 - PhpMyAdminにアクセスする
- ステップ8 - WP-CLIにアクセスする
- ステップ9 - WordPressのバックアップ
- ステップ10 - WordPressをアップグレードする
- 結論
WordPress CMS(コンテンツ管理システム)は、主にウェブサイトやブログのためにデジタルコンテンツを作成、管理、公開することを可能にする広く使用されているオープンソースプラットフォームです。2003年に最初にリリースされて以来、WordPressは世界で最も人気のあるCMSに成長し、インターネット上のすべてのウェブサイトの40%以上を支えています。コーディング経験がほとんどない個人でもプロフェッショナル品質のウェブサイトを構築・維持できるように、ユーザーフレンドリーなインターフェースを提供しています。WordPressは非常にカスタマイズ可能で、数千のテーマやプラグインが利用可能で、その機能を拡張し、シンプルなブログから複雑なeコマースサイトまでさまざまなニーズに応えています。強力なコミュニティサポート、定期的な更新、広範なドキュメンテーションにより、初心者と経験豊富な開発者の両方にとって信頼性が高く多用途の選択肢となっています。
Dockerは、軽量でポータブルなコンテナ内でアプリケーションの展開、スケーリング、および管理を自動化するために設計されたオープンソースのプラットフォームです。2013年に導入されたDockerは、アプリケーションが実行される環境を一貫させることによってソフトウェア開発に革命をもたらしました。これにより、開発者のローカルマシン、オンプレミスのデータセンター、またはクラウドなど、どこにデプロイされても同じ環境で動作します。コンテナは、アプリケーションをそのすべての依存関係、ライブラリ、および設定ファイルと一緒にバンドルし、異なる環境間での一貫したパフォーマンスを保証します。 このコンテナ化は、開発ワークフローを簡素化し、コラボレーションを強化し、開発者がシームレスにアプリケーションを作成、共有、実行できるようにすることで効率を向上させます。Dockerのエコシステムには、Docker SwarmやKubernetesのようなコンテナオーケストレーションのためのツールやサービスが含まれており、大規模なコンテナデプロイメントの管理を容易にします。これにより、現代のDevOps実践における重要な技術となっています。
このチュートリアルでは、Docker/Docker Composeを使用してWordPressをインストールする方法を教えます。Dockerを使用すると、お好みのスタックをインストールするプロセスがはるかに簡単になります。同じ構成を使用して、複数のサーバーにWordPressを迅速にインストールできます。また、データベースを管理するためのphpMyAdminツールと、SSL経由でサイトを提供するためのNginxプロキシサーバーもインストールします。
前提条件
sudo権限を持つ非ルートユーザーがいる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(簡易ファイアウォール)が付属しています。
ファイアウォールが実行中かどうか確認してください。
sudo ufw status
次の出力を得るべきです。
Status: inactive
SSHポートを許可して、ファイアウォールが有効化時に現在の接続が切れないようにします。
sudo ufw allow OpenSSH
HTTPおよびHTTPSポートも許可してください。
sudo ufw allow http
sudo ufw allow https
ファイアウォールを有効にする
sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
ファイアウォールの状態を再度確認してください。
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.gpg
Dockerリポジトリファイルを作成します。
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はルート権限を必要とします。毎回sudoを使わずにdockerコマンドを実行したい場合は、あなたのユーザー名をdockerグループに追加してください。
sudo usermod -aG docker $(whoami)
この変更を有効にするには、サーバーからログアウトし、同じユーザーとして再度ログインする必要があります。または、次のコマンドを使用してください。
su - ${USER}
ユーザーがDockerグループに追加されたことを確認します。
groups
navjot wheel docker
ステップ3 - WordPressのためのDocker Composeファイルを作成する
私は/optにDocker 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 # Plugin development
#- ./theme-name/trunk/:/var/www/html/wp-content/themes/theme-name # Theme development
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と入力します。
私たちは引き出しているWordPressイメージが2つあります。1つはウェブサイト用、もう1つはWP-CLIツール用です。どちらのイメージもMySQL 8.0のDockerイメージに依存しています。ここでは、データベースの資格情報のための環境変数を設定しています。私たちは両方のコンテナ用に2つのボリュームを作成しました。そのうちの1つはWordPressサイトのパブリックファイルを指し、もう1つはカスタムPHP.iniの場所を指しています。また、Nginxの仮想ホストドメインとWordPressサイトのLet's Encrypt SSLドメインのための環境変数も定義しています。
Dockerファイルに追加の環境変数を追加し、カスタムwp-config.phpデータを追加できます。追加の環境変数については、WordPressのDockerHubページで学ぶことができます。
次の画像はphpMyAdminに関するもので、同じMySQLイメージに依存し、ルートパスワードを使用して接続します。アップロード制限は50MBです。要件やデータベースのサイズに応じて変更できます。WordPressサイトと同様に、phpMyAdminサイトのためにNginxのバーチャルホストドメインおよび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 config
php.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/vhost
nginx/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.yml
volumes: 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証明書が格納されるディレクトリ、および上記で追加のNginx設定に使用したバーチャルホスト用のディレクトリも作成しました。WordPressおよびphpMyAdminサイトのファイルアップロードサイズを設定しました。サイトのドメイン名は、前のステップで定義した環境変数から取得されます。
ステップ5 - SSL用にDocker Composeを更新する
Docker Composeファイルを編集のために開いてください。
nano docker-compose.yml
volumes: 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
Ctrl + X を押してファイルを保存し、促されたらYと入力します。
ここでは、Nginxプロキシと連携するAcmeコンパニオン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 wordpressdb
URL https://example.com を開いて、WordPress インストーラーを開始してください。
言語を選択し、次のページに進むために続けるボタンをクリックしてください。
サイトの詳細を入力し、ユーザー名、パスワード、メールアドレスを選択して、WordPressをインストールボタンをクリックしてインストールを開始します。
インストール成功ページに移動します。ログインボタンをクリックしてログインページに移動してください。
ログイン情報を入力し、ログインボタンをクリックしてWordPressダッシュボードを開いてください。
今すぐWordPressを使い始めることができます。
ステップ7 - PhpMyAdminにアクセスする
phpMyAdminにはURLhttps://phpmyadmin.example.comを通じてアクセスできます。
ユーザー名に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 version
Linuxのエイリアスは一時的なものです。エイリアスを永続させるには、~/.bashrcファイルを編集する必要があります。編集のために開いてください。
nano ~/.bashrc
ファイルの末尾に次の行を貼り付けてください。
Custom aliases
alias wp="docker compose -f ~/wordpress/docker-compose.yml run --rm wpcli"
Ctrl + X を押してファイルを保存し、促されたらYと入力します。
設定を再読み込みするためにファイルをソースします。
source ~/.bashrc
WP-CLIを使い始めることができます。
ステップ9 - WordPressのバックアップ
WordPressをバックアップする方法はいくつかあります。最も簡単な方法はプラグインを使用することです。そのためのプラグインはいくつかあります。また、phpMyAdminを使用してバックアップを作成することもできます。
コマンドラインを使用してWordPressデータベースをバックアップすることもできます。WordPressディレクトリに切り替えてください。
cd ~/wordpress
WordPressデータベースをバックアップするには、以下のコマンドを使用してください。MySQLのルートパスワードを求められます。
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をインストールするためのチュートリアルを終了します。質問がある場合は、下のコメントに投稿してください。






