最新の WordPress を気軽に試すための Docker / Docker Compose 設定です。
docker --version
Docker version 25.0.3, build 4debf41
docker compose version
Docker Compose version v2.24.6-desktop.1
- Apache 2.4
- PHP 8.2
- MySQL 8.x
- WordPress 日本語版 最新
- WP-CLI 最新
# WordPress イメージをビルド
docker compose build
# MySQL イメージのダウンロード
docker compose pull
# コンテナ起動
docker compose up -d
Docker volume に置いている wp-content/uploads
の所有者が最初は root
になってしまっているので、 www-data
に変更する必要があります。
docker compose exec -u root wordpress chown -R www-data wp-content/uploads
コンテナを起動すると localhost
のポート 80
で WordPress が起動するのでブラウザまたはターミナルでインストール操作を行います。
ブラウザからインストールする場合のイメージ:
ターミナルからインストールする場合のイメージ:
WP_URL="http://localhost"
WP_ADMIN_USER="admin"
WP_ADMIN_EMAIL="[email protected]"
WP_ADMIN_PASSWORD="password"
docker compose exec wordpress \
wp --allow-root core install \
--url="$WP_URL" \
--title="WordPress サンドボックス" \
--admin_user="$WP_ADMIN_USER" \
--admin_email="$WP_ADMIN_EMAIL" \
--admin_password="$WP_ADMIN_PASSWORD" \
--skip-email
GitHub Codespaces でプレビューを利用する場合は、 URL が localhost
ではないので以下の対応が必要です。
compose.yaml
ファイルの build args の WP_CONFIG_EXTRA
のコメントアウトされた行を安コメントします。
WP_CONFIG_EXTRA: "wp-config-extra-github-codespaces.txt"
WordPress のインストール手続きをブラウザではなくターミナルから行います。
イメージ:
WP_URL="https://${CODESPACE_NAME}-80.${GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN}"
WP_ADMIN_USER="admin"
WP_ADMIN_EMAIL="[email protected]"
WP_ADMIN_PASSWORD="password"
docker compose exec -u www-data wordpress \
wp core install \
--url="$WP_URL" \
--title="WordPress サンドボックス" \
--admin_user="$WP_ADMIN_USER" \
--admin_email="$WP_ADMIN_EMAIL" \
--admin_password="$WP_ADMIN_PASSWORD" \
--skip-email
wp
は wordpress
イメージにインストールされた WP-CLI です。
このコマンドはリポジトリ内の codespaces/install-wordpress-on-docker.sh
に記述してあるので、上のコマンドの代わりにスクリプトを実行しても OK です。
./codespaces/install-wordpress-on-docker.sh
コンテナ起動直後に実行すると、 MySQL のプロセスが起動しきっておらずデータベース接続エラーが起こることがあります。 その場合は少し(数秒)待ってから再度コマンドを実行します。
ポートの公開設定( Visibility )が private だとブラウザでアクセスしたときに CSS などが正しく読み込まれないので、ポートの公開設定を public に変更します。
管理画面にログインできます。
触り終わったらコンテナを停止します。
docker compose down
docker volume rm wordpress-sandbox-ja_db_data
もしくはコンテナ停止時にオプション --volumes
をつけることでも削除できます。
docker compose down --volumes
コンテナに WP-CLI がインストールされています。
docker compose exec wordpress wp
かんたんな説明記事を書きました。
WordPress コミュニティが wp-env
という Node.js ベースの CLI ツールを提供しています。
wp-env
はプラグインやテーマの開発・テストに有用な Docker ベースの環境をかんたんに立ち上げられる、 Docker / Docker Compose のラッパーです。
Docker 公式の WordPress イメージです。