【ITニュース解説】Developing Wordpress projects with Docker. Part 1. Create new project.
2025年09月14日に「Dev.to」が公開したITニュース「Developing Wordpress projects with Docker. Part 1. Create new project.」について初心者にもわかりやすく解説しています。
ITニュース概要
DockerでWordPress開発を始める手順を解説する。新規プロジェクト作成に焦点を当て、必要なファイル(.env, docker-compose.yml)の準備から、MySQLやWordPress、phpMyAdminをDockerコンテナとして構築する方法を具体的に示す。コマンド一つで環境が起動し、開発を始められる。
ITニュース解説
WordPressは、その誕生から20年以上が経過し、今や世界中で数え切れないほどのウェブサイトがこのCMS(コンテンツ管理システム)上で動いている。ブログから企業サイト、さらには複雑なオンラインマーケットプレイスまで、WordPressはその柔軟性から多岐にわたるプロジェクトで利用されてきた。かつてWordPressプロジェクトを開発する際には、LAMP(Linux, Apache, MySQL, PHP)と呼ばれる一連のソフトウェアを手動で設定したり、OpenServerのようなオールインワンのローカルサーバーツールを使ったりするのが一般的だった。しかし、現代のウェブ開発では、より迅速かつ効率的に開発環境を構築し、それを本番サーバーへ簡単に移行できる新しいツールが求められている。その代表的なツールの一つがDockerだ。この記事では、Dockerを使ってWordPressプロジェクトをゼロから構築する方法について解説する。Dockerは、開発者が手間なくプロジェクト環境を準備し、本番環境へのデプロイをスムーズに行うための強力な手段となる。
Dockerは、アプリケーションとその実行に必要なすべてのもの(コード、ランタイム、システムツール、システムライブラリなど)を「コンテナ」と呼ばれる自己完結型のパッケージにまとめて実行する技術だ。これにより、「私の環境では動くのに」といった問題を解消し、どこでも同じように動作する環境を構築できる。もしDockerがまだPCにインストールされていない場合は、Docker公式サイトからダウンロードし、インストールしておく必要がある。
それでは、実際にWordPressプロジェクトをDockerで構築するための準備を始めよう。まず、プロジェクト全体を管理するための新しいフォルダを作成する。このフォルダの中に、いくつかのサブフォルダとファイルを作成していく。具体的には、mysqlフォルダ、wordpressフォルダ、.envファイル、そしてdocker-compose.ymlファイルの合計2つのフォルダと2つのファイルを用意する。mysqlフォルダは、後でデータベースのデータが保存される場所となる。wordpressフォルダは、WordPressのサイトコンテンツ、特にテーマやプラグインなどの編集可能なファイルが配置される。これらのフォルダには、現時点では何もコピーする必要はない。
.envファイルは、プロジェクト固有の設定情報を格納する重要なファイルだ。このファイルには、データベース名、データベースユーザー名、パスワードといった機密情報が含まれるため、通常はGitなどのバージョン管理システムには含めず、ローカル環境でのみ使用される。しかし、プロジェクトをインストールする際には必ず作成する必要がある。記事に示されている例では、以下のような設定が含まれている。MYSQL_ROOT_PASSWORDはデータベースの管理者パスワード、MYSQL_DATABASEはWordPressが使用するデータベースの名前、MYSQL_USERとそのMYSQL_PASSWORDはWordPressがデータベースに接続するためのユーザー名とパスワードをそれぞれ定義している。これらは、セキュリティのためにも必ず自分自身の情報に変更して設定する必要がある。WORDPRESS_DEBUG=0はWordPressのデバッグモードをオフにする設定だ。
docker-compose.ymlファイルは、このプロジェクトの「設計図」とも言える最も重要なファイルだ。このファイルには、プロジェクトを構成する個々のサービス(この場合はMySQL、WordPress、phpMyAdmin)をどのように構築し、互いにどのように連携させるかという詳細な指示が記述されている。このファイルを通じて、複数のコンテナをまとめて管理し、一つのコマンドでまとめて起動・停止できるようになる。このファイルは主に3つの大きなブロック(サービス)と、それらを連携させるネットワーク設定で構成されている。
最初のサービスブロックはmysqlで、これはプロジェクトのデータベースを管理する部分だ。image: mysql:8.0は、Docker HubからMySQLのバージョン8.0のイメージ(ひな形)をダウンロードして使用することを指示している。container_name: wordpress_mysqlは、このデータベースコンテナにwordpress_mysqlという分かりやすい名前を付ける設定だ。restart: unless-stoppedは、コンテナが予期せず停止した場合やDockerが再起動した場合に、自動的にコンテナを再起動させる設定だ。env_file: .envとenvironmentは、先ほど作成した.envファイルからデータベースのパスワードやユーザー名などの設定を読み込み、コンテナ内で利用できるようにする。これにより、機密情報を直接docker-compose.ymlファイルに書かずに済む。volumes: - ./mysql/data:/var/lib/mysqlは、ホストPC(開発者のPC)上の./mysql/dataフォルダと、コンテナ内のMySQLがデータを保存する/var/lib/mysqlフォルダを同期させる。これにより、コンテナが停止したり削除されたりしても、データベースのデータはホストPCに残り、データが失われるのを防ぐことができる(データの永続化)。また、- ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sqlは、MySQLコンテナが初めて起動する際に、ホストPC上のinit.sqlファイルを読み込んでデータベースの初期設定を実行させることを可能にする設定だ。networks: - wordpress_networkは、後述するwordpress_networkという仮想ネットワークにこのMySQLコンテナを接続し、他のサービスと通信できるようにする。command: --default-authentication-plugin=mysql_native_passwordは、MySQLの認証プラグインを設定し、WordPressからの接続を可能にするための重要な設定だ。
次に登場するwordpressサービスブロックは、私たちのウェブサイト本体であるWordPressを動かすための設定だ。image: wordpress:latestは、最新版のWordPressイメージを使用することを意味する。Dockerはプロジェクトのビルド時に自動的にこのイメージをダウンロードするため、事前にWordPressファイルをダウンロードして配置する必要はない。container_name: wordpress_appは、WordPressのコンテナにwordpress_appという名前を付けている。restart: unless-stoppedはMySQLサービスと同様、コンテナの自動再起動設定だ。env_file: .envは、データベース接続情報などを.envファイルから読み込むことを指示する。environmentブロックでは、WordPressがデータベースに接続するために必要な情報(データベースホスト、ユーザー名、パスワード、データベース名)を設定している。ここでWORDPRESS_DB_HOST: mysql:3306と指定することで、WordPressコンテナがmysqlという名前で同じネットワーク上のMySQLコンテナにポート3306で接続できることを示している。volumes: - ./wordpress/wp-content:/var/www/html/wp-contentは、ホストPC上の./wordpress/wp-contentフォルダと、コンテナ内のWordPressのコンテンツフォルダ/var/www/html/wp-contentを同期させる。これにより、開発者はホストPCの./wordpress/wp-contentフォルダにテーマやプラグインを配置したり、編集したりするだけで、WordPressサイトに反映される。この設定のメリットは、WordPressのコアファイル(核となるシステムファイル)はコンテナ内に保たれ、開発者が誤ってこれらを変更してシステムを壊してしまうリスクを避けられる点にある。ports: - "8000:80"は、ホストPCのポート8000番とWordPressコンテナのポート80番を紐付けている。これにより、ウェブブラウザからhttp://localhost:8000/にアクセスすると、WordPressサイトが表示されるようになる。depends_on: - mysqlは、WordPressコンテナが起動する前に、mysqlコンテナが起動している必要があることをDockerに伝える設定だ。これにより、WordPressがデータベースに接続できないまま起動してしまう問題を回避できる。networks: - wordpress_networkは、このWordPressコンテナもwordpress_networkに接続することで、MySQLコンテナと通信できるようにする。
3つ目のphpmyadminサービスは、ウェブブラウザを通じてMySQLデータベースを簡単に管理するためのツールだ。このサービスは必須ではないが、データベースの内容を確認したり、直接編集したりする際に非常に便利だ。image: phpmyadmin:latestは、最新版のphpMyAdminイメージを使用する。container_name: wordpress_phpmyadminはコンテナの名前。restart: unless-stoppedは自動再起動設定だ。environmentでは、phpMyAdminがどのデータベースサーバーに接続するか(PMA_HOST: mysql)とポート番号(PMA_PORT: 3306)を設定している。ここでもmysqlという名前で同じネットワーク上のMySQLコンテナに接続する。ports: - "8080:80"は、ホストPCのポート8080番とphpMyAdminコンテナのポート80番を紐付けているため、http://localhost:8080/でphpMyAdminにアクセスできる。depends_on: - mysqlは、phpMyAdminがmysqlコンテナに依存していることを示す。networks: - wordpress_networkは、このコンテナも仮想ネットワークに接続する。
最後にnetworksブロックがある。wordpress_networkという名前のネットワークをdriver: bridgeで作成している。これは、先ほど設定したMySQL、WordPress、phpMyAdminの各サービスが互いに名前で通信できるようにするための仮想的な内部ネットワークだ。このネットワークのおかげで、例えばWordPressコンテナはmysqlという名前でMySQLコンテナに接続できるようになる。
すべてのファイルとフォルダの準備が整ったら、いよいよプロジェクトを実行する段階だ。まず、PC上でDockerが実行されていることを確認しよう。次に、docker-compose.ymlファイルがあるプロジェクトのルートフォルダをターミナル(コマンドプロンプトやBashなど)で開き、以下のコマンドを入力して実行する。docker-compose up -d。このコマンドを実行すると、Dockerはdocker-compose.ymlファイルに書かれた指示に従って、必要なDockerイメージをダウンロードし、MySQL、WordPress、phpMyAdminの各コンテナをビルドして起動する。-dオプションは、これらのコンテナをバックグラウンドで実行し、ターミナルを解放することを意味する。数分後、すべてのコンテナが正常に起動すれば、ウェブブラウザからWordPressサイトとphpMyAdminにアクセスできるようになる。WordPressプロジェクトはhttp://localhost:8000/、phpMyAdminはhttp://localhost:8080/でアクセスできる。これらのURLにアクセスして、WordPressの初期設定画面やphpMyAdminのログイン画面が表示されれば、Dockerを使ったWordPress開発環境の構築は成功だ。これで、ホストPCのwordpressフォルダにあるwp-contentを編集しながら、WordPressサイトの開発を始めることができる。コアファイルを気にせず、安全かつ効率的に開発を進められる点がDockerを使う大きなメリットだ。