ウェブサイト検索

DockerコンテナとしてWordPressを迅速に展開する方法


WordPressは最も人気のあるコンテンツ管理システムです。それはPHPで書かれ、データはMySQLデータベースに保存され、通常はApacheウェブサーバーの背後で動作します。これらの依存関係は、システムにいくつかのパッケージを追加し、時間が経つにつれて維持が難しくなることがあります。ここでは、公式のDockerイメージを使用してコンテナ化されたWordPressインストールを迅速に起動する方法を説明します。

始めに

DockerでWordPressを実行するには、2つの別々のコンテナが必要です: ApacheとPHPを実行するウェブコンテナと、MySQLをホストするデータベースコンテナです。また、WordPressのデータディレクトリ用にDockerボリュームを設定する必要があります。これらは構成ファイルやアップロードされたメディアを保存し、コンテナの再起動にわたって保持されます。

続行する前に、DockerとDocker Composeがインストールされていることを確認してください。Docker CLI単体でも使用できますが、Composeを使うことで2つのサービス、その依存関係、そしてボリュームを定義するのがより簡単になります。1つのコマンドで全体のスタックを立ち上げることができます。

基本画像

公式のWordPress Dockerイメージは、多くの異なるタグ付けされたバージョンで利用可能です。これらは、利用可能なWordPressおよびPHPのバージョンのスペクトルをカバーしています。もしあなたが使用する場合は、

latest

タグを付けると、最新のPHPリリースで現在のWordPressバージョンが得られます。

デプロイメントをより制御するために、特定のWordPressおよびPHPのバージョンを使用してください。以下にいくつかの例を示します:

  • wordpress:5.7
  • - 最新のPHPを使用したWordPress 5.7。

  • wordpress:php7.4
  • - 最新のWordPressを使用したPHP 7.4。

  • wordpress:5.7-php7.4
  • - PHP 5.4を使用したWordPress 5.7。

Docker Hub では、サポートされているタグの詳細なリストが提供されています。バージョンピン留めのサポートに加えて、Apache、FPM、および Alpine 用の画像バリアントも利用可能です。

画像には使用可能なデフォルト設定があらかじめ構成されています。自分の設定を追加することもできます。

php.ini

互換性のあるファイルをにコピーして設定します。

$PHP_INI_DIR/conf.d

WordPressコンテナ内のディレクトリ。

スタックを展開する

サイト用の新しいディレクトリを作成し、その後追加してください。

docker-compose.yml

ファイル。以下の内容を貼り付けます:

version: "3"

services:

wordpress:

image: wordpress:5.7-php7.4

restart: unless-stopped

ports:

- 80

environment:

WORDPRESS_DB_HOST: mysql

WORDPRESS_DB_USER: username

WORDPRESS_DB_PASSWORD: password

WORDPRESS_DB_NAME: wordpress

volumes:

- wordpress:/var/www/html

mysql:

image: mysql:5.7

restart: unless-stopped

environment:

MYSQL_DATABASE: wordpress

MYSQL_USER: username

MYSQL_PASSWORD: password

MYSQL_RANDOM_ROOT_PASSWORD: "1"

volumes:

- mysql:/var/lib/mysql

volumes:

wordpress:

mysql:

このComposeファイルは、必要なWordPressおよびMySQLサービスを含む最小限のスタックを定義しています。データベース接続は環境変数を使って設定されています。データベースのユーザー名とパスワードを安全な値に変更する必要があります。両方のサービス定義に変更を適用することを忘れないでください。

サービスは手動で停止されない限り、自動的に再起動するように設定されています。これにより、ホストシステムを再起動した際に、あなたのサイトが自動的に復旧することが保証されます。

WordPressのインストールディレクトリ全体がボリュームにマウントされています。このアプローチを使用することで、設定、テーマ、プラグイン、アップロードを含むすべてのWordPressコンテンツがコンテナの外部に維持されます。また、管理パネルからWordPressの自己アップデーターを使用することもできます。データディレクトリのみをボリュームにマウントした場合、自己アップデーターによって適用された変更は、コンテナの再起動後に失われます。

スタックをデプロイするには実行してください

docker-compose up -d

WordPressにログインするには、次のサイトにアクセスしてください。

http://localhost

ブラウザで。「データベース接続の確立に失敗しました」というメッセージが表示された場合は、再試行する前に少し待ってください。初回のデータベースプロビジョニングには数秒かかることがあります。

標準的なWordPressセットアップウィザードをクリックして、サイトを設定してください。最初の管理者ユーザーアカウントを設定する必要があります。これらの認証情報は、MySQLデータベースのものとは異なる必要があります。完了するとWordPressのログインフォームが表示されます。新しい管理者アカウントを使用して、管理ダッシュボードにログインしてください。

次のステップ

あなたのWordPressインストールは使用する準備が整いました。管理インターフェースを使用して、投稿、ページ、テーマ、プラグインを追加してください。これは、ベアメタルのWordPressインストールと同じです。

サイトの攻撃リスクを減らすために、基本的なセキュリティ強化手順を実施することをお勧めします。また、バックアップルーチンも確保しておくべきです。これはMySQLデータベースとWordPressのアップロードディレクトリをカバーする必要があります。

wp-content

Dockerシークレットによる構成

環境変数を使用して設定することは、ローカルでの使用に適しています。また、他の共同作業者がアクセスできる環境でのセキュリティを向上させるために、Dockerシークレットもサポートされています。Composeファイルでシークレットを定義し、変数を次のように置き換えます。

WORDPRESS_DB_PASSWORD

のために

WORDPRESS_DB_PASSWORD_FILE

WordPressは、Dockerが注入する秘密のファイルから変数の値を読み込みます。

services:

wordpress:

environment:

WORDPRESS_DB_PASSWORD_FILE: /run/secrets/WORDPRESS_DB_PASSWORD

secrets:

- WORDPRESS_DB_PASSWORD

secrets:

WORDPRESS_DB_PASSWORD:

file: ./db_password

パスワードを追加する

db_password

作業ディレクトリ内のファイル。アクセス可能です。

/run/secrets/WORDPRESS_DB_PASSWORD

コンテナ内で。WordPress は、最終的なデータベースのパスワードを決定するためにこのファイルを読み取るように指示されています。

自分のサイトを追加する

上記の手順により、管理センターを介して対話的に設定する準備が整った新しいWordPressインストールが得られます。これらをマウントすることで、コンテナにデフォルトのテーマとプラグインのセットをプロビジョニングすることができます。

/var/www/html/wp-content/themes

そして

/var/www/html/wp-content/plugins

ディレクトリ。

この技術は、サイトのためのカスタムDockerイメージを作成するのにも役立ちます。公式のWordPressイメージをベースとして使用し、サイトの資産を適切なディレクトリにコピーします。以下は、カスタムテーマを使える状態のイメージとしてパッケージ化する方法の一例です:

FROM wordpress:5.7-php7.4-apache
COPY ./theme/ /var/www/html/wp-content/themes/example-theme/

あなたのテーマは、開始する各コンテナで利用可能になります。ただし、この方法では自動的にテーマが有効になるわけではありません。そのためには、WordPress CLI イメージを使用する別のサービスが必要です。

services:

wpcli:

image: wordpress:cli-2-php7.4

environment:

WORDPRESS_DB_HOST: mysql

WORDPRESS_DB_USER: username

WORDPRESS_DB_PASSWORD: password

WORDPRESS_DB_NAME: wordpress

volumes_from:

- wordpress:rw

CLIコンテナは、通常のウェブコンテナに提供される環境変数とボリュームにアクセスする必要があります。環境変数は複製する必要がありますが、それらを再利用可能なYAMLセクションに抽出することもできます。一方、ボリュームはvolumes_fromを使用してマウントできます。

これで、Docker Composeを使用してWordPressのインストールを完了し、テーマを有効にすることができます:

docker-compose run wpcli core install --title="My Site" --admin_user=admin --admin_password=changeme --admin_email=me@example.com --url=localhost --allow-root
docker-compose run wpcli theme activate example-theme --allow-root

これらのステップは、イメージビルドプロセスやCIパイプラインの一部として自動化できます。最終的なコンテナをコミットすることで、サイトのスタンドアロンイメージを作成し、今後の使用に備えることができます。

結論

Dockerを使用してWordPressを利用することで、ホストマシンを汚染することを避け、サイトとその設定をコンテナ化するのに役立ちます。サービスをDocker Composeファイルとして定義することで、新しいインスタンスを迅速に立ち上げ、共同作業者が作業を始めるのを助けることができます。

スタックがライブになったら、継続的なメンテナンスは通常のWordPressインストールと似ています。WordPress、プラグイン、テーマを更新し続け、セキュリティの問題を積極的にチェックしてください。

Docker特有の housekeeping タスクの1つは、WordPressのベースイメージを更新することです。重要なオペレーティングシステムのパッチを逃さないためにも、定期的に最新のイメージをプルすることが良いプラクティスです。docker-compose up -d --pullを実行して、イメージをプルし、サービスを再起動します。

関連記事: