アレアレ

お役立ち情報、お悩み解決情報を発信!

WordPress

Docker Composeで作ったWordPress環境にSequel Proでアクセスできなかった原因

Docker Composeで作ったWordPress環境にSequel Proでアクセスできなかった原因

今回は、Docker for macを使って、ローカルにWordPress環境を作るのが初めての人に伝えたい情報です。

Docker Composeを使うとローカルのWordPressが簡単に作れる

Docker Composeを利用すると、コマンド一発でまっさらなWordPress環境をローカルに作れます。

私は、これまで、MAMP、VMWare Fusion、Vagrantなどを利用して、その環境を作って来ましたが、Docker Composeを利用する方法が一番手軽に感じています。WordPressが動く状況で整ったWebサーバーとDBサーバーをコマンド一発で作れるからです。

その具体的な手順については、Dockerの公式サイトで公開されています。

docker docs: Quickstart: Compose and WordPress

簡単には、それ用の「docker-compose.yml」と言う設定ファイルを用意し、ターミナルから「docker-compose up -d」と実行するだけで、WordPressのローカル環境が出来上がります。

そのMySQLのコンテナにSequel Proでアクセスできない

この公式サイトで公開されている「docker-compose.yml」から環境を作ると、WordPressが仕込まれたWebサーバーのコンテナと、MySQLのDBサーバーのコンテナの2つが、docker上に立ち上がった状態になります。

そして、私は、そのMySQLのコンテナにSequel Proでアクセスしたかったんですね。データベースを変更するプラグインを開発したく、データベースの中身を見るのに、Sequel Proが便利だからです。

そこでSequel Proで、接続情報を次のように設定し、MySQLのコンテナ上のDBにアクセスしようとしました。

dockerのMySQLコンテナにSequel Proでアクセスするときの接続情報

ところがアクセスしようとするとエラーになりできませんでした。

公式のdocker-compose.ymlを修正する必要があった

その原因を調べた結果、dockerの公式サイトで、公開されているWordPress用のdocker-compose.ymlを修正する必要があることがわかりました。

具体的には、次の「ports」の部分を追加する必要がありました。

ports:
       - "3306:3306"

以下、dockerの公式サイトから引用したものを修正した例。

version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     <strong><span class="red">ports:
       - &quot;3306:3306&quot;</span></strong>
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - &quot;8000:80&quot;
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:

この修正を行ったのち、「docker-compose up -d」でコンテナを起動し直した結果、Sequel Proからもちゃんとアクセスできるようになりました。

要するに、修正前のdocker-compose.ymlでは、MySQLのコンテナのポート3306が公開されていない状況なんですね。なので、Sequel Proも含めて、ホストOS側からアクセスできない状況となっていました。

私は、最初この状況に直面したとき、「WordPressコンテナからはDBに接続できているのに、なぜSequel Proではダメなんだ???」と疑問に感じましたが、原因がわかると当たり前のことでした。

Return Top