WordPressをBitnamiで構築したい

Bitnamiが提供するWordPressイメージを使用してセキュリティ強化された環境を構築します。 本番環境やセキュリティ重視の場合に推奨される方法です。

Bitnamiとは

Bitnamiは、VMware傘下のオープンソースアプリケーションパッケージ企業です。 WordPressなど人気のあるアプリケーションを、セキュリティを強化してDockerイメージやVMとして提供しています。

特徴

  • セキュリティ重視 - CVE(脆弱性)への対応が迅速

  • 本番環境対応 - OCI(Oracle Container Initiative)に準拠

  • 積極的なメンテナンス - 定期的にセキュリティアップデートを提供

  • ドキュメント充実 - GitHub上に詳細なドキュメントを公開

公式イメージとの違い

項目

公式イメージ

Bitnamiイメージ

メンテナー

各プロジェクト

Bitnami(VMware)

セキュリティ

標準的

強化(最小権限で動作)

wp-cli

別途インストール

同梱

SSL/TLS

設定が必要

デフォルトで対応

サイズ

約500MB

約1GB

推奨用途

学習・開発

本番環境

概要

Bitnamiイメージの特徴:

  • セキュリティ強化 - 最小限のユーザー権限で動作

  • wp-cli同梱 - コマンドラインツールが最初から利用可能

  • SSL/TLS対応 - HTTPSポート(8443)がデフォルトで開放

  • 初期ユーザー設定 - 環境変数で管理者アカウント作成可能

利用可能なイメージ:

Bitnami + MySQLの構成

compose.yaml を作成

# compose.yaml
services:
  wordpress:
    image: bitnami/wordpress:latest
    container_name: wordpress-dev
    ports:
      - "8080:80"
      - "8443:443"
    environment:
      WORDPRESS_DATABASE_HOST: db
      WORDPRESS_DATABASE_NAME: ${WORDPRESS_DB_NAME:-wordpress}
      WORDPRESS_DATABASE_USER: ${WORDPRESS_DB_USER:-wordpress}
      WORDPRESS_DATABASE_PASSWORD: ${WORDPRESS_DB_PASSWORD:-wordpress}
      WORDPRESS_USERNAME: admin
      WORDPRESS_PASSWORD: ${WORDPRESS_ADMIN_PASSWORD:-admin123}
      WORDPRESS_EMAIL: admin@example.com
    volumes:
      - wordpress_data:/bitnami/wordpress
    depends_on:
      - db
    restart: always

  db:
    image: bitnami/mysql:8.0
    container_name: wordpress-db
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root}
      MYSQL_DATABASE: ${WORDPRESS_DB_NAME:-wordpress}
      MYSQL_USER: ${WORDPRESS_DB_USER:-wordpress}
      MYSQL_PASSWORD: ${WORDPRESS_DB_PASSWORD:-wordpress}
    volumes:
      - db_data:/bitnami/mysql/data
    restart: always

volumes:
  wordpress_data:
  db_data:

起動と初期設定

$ docker compose up -d

# ブラウザでアクセス(HTTP)
$ open http://localhost:8080

# またはHTTPS
$ open https://localhost:8443

# wp-cliで操作
$ docker compose exec wordpress wp user list

環境変数の設定

.envファイルを作成して環境変数をカスタマイズできます:

# .env
WORDPRESS_DB_NAME=my_wordpress
WORDPRESS_DB_USER=wp_user
WORDPRESS_DB_PASSWORD=secure_password
MYSQL_ROOT_PASSWORD=root_password
WORDPRESS_ADMIN_PASSWORD=admin_password

Bitnamiイメージ単体での構成

WordPressとPHPをまとめたワンイメージで、マネージドデータベース(AWS RDS、Azure Databaseなど)を外部で使用する場合:

# compose.yaml
services:
  wordpress:
    image: bitnami/wordpress:latest
    ports:
      - "8080:80"
      - "8443:443"
    environment:
      WORDPRESS_DATABASE_HOST: ${DB_HOST:-db.example.com}
      WORDPRESS_DATABASE_NAME: ${WORDPRESS_DB_NAME:-wordpress}
      WORDPRESS_DATABASE_USER: ${WORDPRESS_DB_USER:-wordpress}
      WORDPRESS_DATABASE_PASSWORD: ${WORDPRESS_DB_PASSWORD:-wordpress}
      WORDPRESS_USERNAME: admin
      WORDPRESS_PASSWORD: ${WORDPRESS_ADMIN_PASSWORD:-admin123}
    volumes:
      - wordpress_data:/bitnami/wordpress
    restart: always

volumes:
  wordpress_data:

環境変数でデータベースホストを指定することで、外部のマネージドデータベースと連携できます。

wp-cliの使用例

Bitnamiイメージにはwp-cliが同梱されているため、コマンドラインからWordPressを管理できます:

ユーザー管理

# ユーザー一覧を表示
$ docker compose exec wordpress wp user list

# 新規ユーザーを作成
$ docker compose exec wordpress wp user create author author@example.com --user_pass=password --role=author

# ユーザーのパスワードをリセット
$ docker compose exec wordpress wp user update admin --user_pass=newpassword

プラグイン管理

# プラグイン一覧を表示
$ docker compose exec wordpress wp plugin list

# プラグインをインストール
$ docker compose exec wordpress wp plugin install hello-dolly

# プラグインを有効化
$ docker compose exec wordpress wp plugin activate hello-dolly

# プラグインを無効化
$ docker compose exec wordpress wp plugin deactivate hello-dolly

# プラグインをアンインストール
$ docker compose exec wordpress wp plugin delete hello-dolly

テーマ管理

# テーマ一覧を表示
$ docker compose exec wordpress wp theme list

# テーマをインストール
$ docker compose exec wordpress wp theme install twentytwentythree

# テーマを有効化
$ docker compose exec wordpress wp theme activate twentytwentythree

サイト設定

# サイトのURLを変更
$ docker compose exec wordpress wp option update siteurl "https://example.com"
$ docker compose exec wordpress wp option update home "https://example.com"

# サイトのタイトルを変更
$ docker compose exec wordpress wp option update blogname "My WordPress Site"

# サイト情報を表示
$ docker compose exec wordpress wp option list | grep -E "siteurl|home|blogname"

データベース操作

# データベースをバックアップ
$ docker compose exec db mysqldump -u wordpress -pwordpress wordpress > backup.sql

# バックアップを復元
$ docker compose exec -T db mysql -u wordpress -pwordpress wordpress < backup.sql

SSL/TLSの設定

自己署名証明書でHTTPSを使用

Bitnamiイメージはデフォルトで自己署名証明書を使用しており、HTTPSポート(8443)でアクセス可能です:

# HTTPSでアクセス
$ open https://localhost:8443

ブラウザに警告が表示されますが、これは自己署名証明書であるためです。

Let’s Encryptで正式な証明書を使用

本番環境では、Let’s Encryptなどのサービスで正式な証明書を取得し、以下のようにボリュームマウントします:

services:
  wordpress:
    image: bitnami/wordpress:latest
    volumes:
      - wordpress_data:/bitnami/wordpress
      - ./certs:/bitnami/apache/conf/bitnami/certs:ro

証明書ファイルを./certs/ディレクトリに配置します:

./certs/
├── server.crt
└── server.key

トラブルシューティング

パーミッションエラーが出る

Bitnamiイメージはbitnamiユーザーで動作します。 ボリュームのパーミッションを確認:

$ docker compose exec wordpress ls -la /bitnami/wordpress

wp-cliコマンドが失敗する

データベース接続情報が正しいか確認:

$ docker compose exec wordpress wp db check

SSL証明書エラーが出る

自己署名証明書を使用している場合、ブラウザに警告が表示されます。 本番環境では正式な証明書を使用してください。

よくある使い方

MariaDBを使いたい

MySQLの代わりにMariaDBを使う場合:

db:
  image: bitnami/mariadb:11
  environment:
    MARIADB_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root}
    MARIADB_DATABASE: ${WORDPRESS_DB_NAME:-wordpress}
    MARIADB_USER: ${WORDPRESS_DB_USER:-wordpress}
    MARIADB_PASSWORD: ${WORDPRESS_DB_PASSWORD:-wordpress}
  volumes:
    - db_data:/bitnami/mariadb/data

ボリュームを削除してリセットしたい

$ docker compose down -v

-vフラグでボリュームも削除され、すべてのデータが初期化されます。

ログを確認したい

# Wordpressのログ
$ docker compose logs -f wordpress

# データベースのログ
$ docker compose logs -f db

別のポートを使用したい

wordpress:
  ports:
    - "3000:80"
    - "3443:443"

リファレンス