はじめに
この記事では、Dockerを使ってWordPressをセットアップする方法をステップバイステップで解説します。
Dockerを使用することで、環境依存の問題を減らし、手軽にWordPress環境を構築することができます。
今回は、AlmaLinuxおよびUbuntuの両方に対応した手順を紹介します。また、HTTPS化も行い、安全な通信を実現します。
dockerのインストール
まずは、Dockerをインストールするところから始めます。
既に古いバージョンのDockerがインストールされている場合は、以下のコマンドでそれらを削除しましょう。
- AlmaLinux
- Ubuntu
# 古いパッケージの削除
sudo dnf remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 競合するパッケージを削除
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
次に、Dockerをインストールします。以下のコマンドを実行してください。
- AlmaLinux
- Ubuntu
# Dockerインストール処理
sudo dnf install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
# パッケージ インデックスを更新
sudo apt-get update -o Dir::Etc::sourcelist=/dev/null
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release software-properties-common -y
# Dockerの公式GPGキーを追加
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --yes --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /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 \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# パッケージ インデックスを更新
sudo apt-get update
# Dockerをインストール
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
インストールが完了したら、自動起動の設定を行い、Dockerを起動します。
# 自動起動するように設定
sudo systemctl enable docker
sudo systemctl start docker
最後に、現在のユーザーをdockerグループに追加して、コマンドを実行する際にsudoを必要としないようにします。
# 現在のユーザーをdockerグループに追加
sudo usermod -aG docker $USER
docker-composeのインストール
次に、Docker Composeをインストールします。これは複数のDockerコンテナを簡単に管理するためのツールです。
sudo -E curl -L https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
nginx-proxyコンテナでリバースプロキシを作成
リバースプロキシを設定することで、複数のサービスを同じポートで動かすことができます。
ここでは、nginx-proxyを使用して設定します。さらに、Let’s Encryptを使って自動的にSSL証明書を取得し、HTTPS化します。
まず、必要なディレクトリを作成し、設定ファイルを配置します。
mkdir -p /usr/local/src/nginx-proxy
cd /usr/local/src/nginx-proxy
vi docker-compose.yml
vi
エディタが開いたら、以下の内容を貼り付けます。
version: '3'
services:
nginx-proxy:
image: nginxproxy/nginx-proxy
container_name: nginx-proxy
ports:
- 80:80
- 443:443
volumes:
- conf:/etc/nginx/conf.d
- certs:/etc/nginx/certs:ro
- vhost:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- /var/run/docker.sock:/tmp/docker.sock:ro
environment:
DEFAULT_HOST: ★ここにドメイン名を入れる
HTTPS_METHOD: noredirect
restart: always
acme-companion:
image: nginxproxy/acme-companion
container_name: nginx-proxy-acme
volumes_from:
- nginx-proxy
volumes:
- certs:/etc/nginx/certs:rw
- acme:/etc/acme.sh
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: always
volumes:
conf:
certs:
vhost:
html:
acme:
設定が完了したら、リバースプロキシコンテナを起動します。
cd /usr/local/src/nginx-proxy
docker-compose up -d
WordPressコンテナを作成する
次に、WordPress用のコンテナを作成します。データベースとWordPressを別々のサービスとして設定します。
mkdir -p /usr/local/src/wordpress
cd /usr/local/src/wordpress
vi docker-compose.yml
vi
エディタが開いたら、以下の内容を貼り付けます。
version: '3'
services:
db:
image: mysql:8.0
volumes:
- ./db:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: ★パスワードを設定
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: ★パスワードを設定
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
volumes:
- ./wordpress:/var/www/html
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: ★パスワードを設定
VIRTUAL_HOST: ★ドメイン名
VIRTUAL_PROTO: http
LETSENCRYPT_HOST: ★ドメイン名
LETSENCRYPT_EMAIL: ★メールアドレス
networks:
default:
external:
name: nginx-proxy_default
WordPressコンテナを起動
最後に、WordPressコンテナを起動します。
cd /usr/local/src/nginx-proxy
docker-compose up -d
これで、リバースプロキシとWordPressコンテナが起動し、指定したドメインでWordPressにアクセスできるようになります。ブラウザでドメインを開き、WordPressの初期設定を行いましょう。
HTTPSの設定について
nginx-proxy
とacme-companion
を使用することで、Let’s EncryptからSSL証明書を自動的に取得し、HTTPS化を行います。
これにより、サイトの通信が暗号化され、セキュアな接続が確立されます。
docker-compose.yml
で以下の環境変数を設定しました:
VIRTUAL_HOST
: ドメイン名を指定VIRTUAL_PROTO
:http
に設定LETSENCRYPT_HOST
: ドメイン名を指定LETSENCRYPT_EMAIL
: Let’s Encryptの通知を受け取るメールアドレスを指定
これらの設定により、Let’s EncryptのSSL証明書が自動的に取得され、NginxプロキシがHTTPSをサポートします。
証明書の確認
下記コマンドを実行するとSSL証明書のステータスが確認できます。
docker exec nginx-proxy-acme /app/cert_status
##### Certificate status #####
/etc/nginx/certs/vvil.jp/fullchain.pem: OK
Certificate was issued by
Certificate is valid until Sep 19 03:21:31 2024 GMT
Subject Name:
Certificate is used by the following domain(s):
- vvil.jp
##############################
手動でSSL証明書を更新するには下記コマンドを実行してください。
docker exec nginx-proxy-acme /app/force_renew