検証目的で、docker-composeを用いてローカルに「WordPress + Google Cloud SQL (Cloud SQL Auth Proxy利用)」の構築を行いました。
個人的にですが、結構簡単にできたのでその方法の共有記事です。
流れ
- Cloud SQLインスタンス作成
- 作成したインスタンスにWordPress用のデータベース作成
- Cloud SQL Auth Proxy用のサービスアカウント作成
- docker-compose
- 接続確認
Cloud SQL
Cloud SQLは、Google Cloudが提供しているリレーショナルデータベースサービスです。
データベースの作成や管理(バックアップなど)が簡単に行なえます。
CPUやメモリ、ディスクなどのスペックについて色々と設定が決められるのですが、今回は構築が可能ということを確認したかっただけなのでほぼ最小の構成としました。
データベース作成
コンソールでインスタンスを作成した場合、インスタンスの作成後にWordPress用のデータベースを作成する必要があります。
作成したインスタンスを選択→左のサイドバーから「データベース」を選択→「データベースの作成」を押下
の順で作成画面に行けます。
ここで、データベース名、文字セット及び照合順序を指定します。
Cloud SQL Auth Proxy
インスタンスにパブリックIPを付与している場合、アクセスするには「承認済みネットワーク」(アクセスを許可するCIDR範囲を指定)を設定する必要があります。
しかし、Cloud SQL Auth Proxyを用いることで、「承認済みネットワーク」の設定なしにローカルからアクセスすることが可能になります。
ローカルへインストールする方法と、Dockerイメージを引っ張ってくる方法があります。
どちらにしろ事前にサービスアカウントを作成しておく必要があるので気をつけてください。
ロールは「Cloud SQLクライアント」のみで大丈夫です。
docker-compose
Cloud SQLの準備が終わったら、以下の設定のもとコンテナを立ち上げます。
こちらを参考に、データベースの部分をCloud SQL Auth Proxyに書き換えた感じです。
version: '3'
services:
sql_proxy:
image: gcr.io/cloudsql-docker/gce-proxy:latest
volumes:
- ${作成したサービスアカウントキーを保管しているディレクトリ}:/config
ports:
- "3306:3306"
restart: always
command: /cloud_sql_proxy -instances=${作成したCloud SQLインスタンスの接続名}=tcp:0.0.0.0:3306 -credential_file=/config/${作成したサービスアカウントキーのファイル名}
wordpress:
depends_on:
- sql_proxy
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: sql_proxy:3306
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: hogehoge
今回はMySQLを使っているので、ポート番号は3306となります。
接続確認
ファイルの準備もできたら、あとはdocker-compose up
でコンテナを起動するのみです。
$ docker-compose up -d
Creating wordpress_sql_proxy_1 ... done
Creating wordpress_wordpress_1 ... done
$ docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------------------------------
wordpress_sql_proxy_1 /cloud_sql_proxy -instance ... Up 0.0.0.0:3306->3306/tcp,:::3306->3306/tcp
wordpress_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8000->80/tcp,:::8000->80/tcp
無事WordPressへアクセス、初期設定することもできました。