Docker で WordPress コンテナを作る方法
ブログのシステムとしては WordPress が人気だと思います。 WordPress をカスタマイズして使用されている方も多いのではないでしょうか。 動作確認などするために、自由に使える WordPress 環境があると便利かもしれません。 Docker で WordPress のコンテナを作成してみましょう。
Docker で WordPress コンテナを作る
コンテナのイメージは、下記の公式イメージを使用します。
イメージのバージョン(タグ)は特にこだわりが無ければ最新版(latest
)で良いと思います。
WordPress は Web サーバー上で動作しますので、コンテナ側のポート番号は 80 番です。 ホスト側から Web ブラウザ(Chrome など)で接続できるよう、コンテナ側のポート 80 番へのマッピングを設定しましょう。 ホスト側のポート番号は、他で使用されていないものなら何番でも良いと思います。
version: "3.8" services: # WordPress コンテナ wordpress: image: wordpress:latest ports: - 8080:80
ファイルが消えないようにする
WordPress の設定ファイルやアップロードしたファイルなどは、デフォルトでは "/var/www/html" に保存されます。 WordPress コンテナを再作成したりした際にファイルが消えてしまっては困ると思いますので、 バインドマウントか名前付きボリュームを使用して、コンテナの外にファイルが保存されるようにしましょう。 ボリュームを設定しない場合は、勝手にハッシュ名のボリュームが作成されるようなのですが、 わかりづらいのでちゃんと設定した方が良いと思います。
ちなみにですが、"/var/www/html" 配下は WordPress コンテナのドキュメントルートです。 Windows でバインドマウントを使用した場合に処理速度が気になる場合は、 「Windows の Docker 環境を高速化する方法」を参考に、 WSL 2 にバインドマウントする方法を検討してみてください。
version: "3.8" services: # WordPress コンテナ wordpress: image: wordpress:latest ports: - 8080:80 volumes: - ./wordpress-files:/var/www/html
データベースを用意する
WordPress のデータはデータベースに保存されますが、 後述の WordPress のインストール時にテーブルなどが作成されるため、 先にデータベースを用意しておく必要があります。 データベースには MySQL(MariaDB)が必要です。 そのため、MySQL コンテナを用意する必要があります。 MySQL コンテナを作成する方法は「Docker で MySQL コンテナを作る方法」を参考にしてください。
なお、MySQL コンテナの中にデータベースを先に作っておく必要があるので注意してください。 テーブルは自動で作成されますが、データベースは自動で作成してくれません。
WordPress コンテナは、接続先の MySQL コンテナが起動していない状態だと意味が無いと思いますので、
depends_on
の項目で、MySQL コンテナの後に起動するように設定しておくと良いでしょう。
version: "3.8" services: # MySQL コンテナ mysql: image: mysql:latest volumes: - ./mysql-data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: password # WordPress コンテナ wordpress: image: wordpress:latest ports: - 8080:80 depends_on: - mysql volumes: - ./wordpress-files:/var/www/html
データベースを接続する
用意したデータベースへの接続情報を WordPress コンテナに設定するには2つの方法があります。
- WordPress のインストーラーの画面で指定する方法
- 環境変数で指定する方法
どちらの方法を使用してもあまり大差ない気がしますので、お好みの方法で設定すると良いでしょう。 Docker に詳しくない方はインストーラーの画面を使用した方が楽かもしれませんし、 Docker に詳しい方は環境変数の方が楽かもしれません。
なお、接続情報を入力する際、MySQL コンテナのホスト名には docker-compose.yml で定義しているサービス名(つまり、services
項目で指定しているキー)を使用できます。
上記の例では、ホスト名として "mysql" が使用できます。
環境変数で指定する
環境変数で指定する場合は、下記の例を参考にしてください。
version: "3.8" services: # MySQL コンテナ mysql: image: mysql:latest volumes: - ./mysql-data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: password # WordPress コンテナ wordpress: image: wordpress:latest ports: - 8080:80 depends_on: - mysql volumes: - ./wordpress-files:/var/www/html environment: WORDPRESS_DB_HOST: mysql WORDPRESS_DB_USER: root WORDPRESS_DB_PASSWORD: password WORDPRESS_DB_NAME: wordpress WORDPRESS_TABLE_PREFIX: wp_
WordPress をインストールする
データベースの用意ができたら WordPress コンテナを起動しましょう。 WordPress のインストール画面が表示されますので、画面に従って設定しましょう。 データベースの接続情報(未設定の場合のみ)や、管理者アカウントの設定などが必要になります。 インストーラーの画面に従って入力すれば特に困ることもないでしょう。 正しく設定できていれば WordPress が使用できるようになります。