早い!簡単!30分でCloud Runを使ってphpMyAdmin環境構築!

GMOアドマーケティングのy.yです。

 

今回は 2019/11/14  に一般提供版(GA)となった

GCPのCloud RunCloud SQLでphpMyAdminを構築したいと思います。

Cloud Run は、ステートレス コンテナを自動的にスケールするマネージド型のコンピューティング プラットフォームです。Cloud Run はサーバーレスです。

元となるDockerfileはdockerhubのものを使用します。

※Cloud SQLのインスタンスは事前に作成しているものとします。

 

Cloud RunではDockerfile、apache設定、docker-entrypointに修正する必要があったので変更点を記載します。

 

変更点1:Dockerファイルを変更します

変更前

 

変更後

3〜9行目追加(apacheの設定ファイル更新)

113行目追加(portのexport)

 

変更点2:docker-entrypoint.shを変更します

変更前

変更後

39〜44行目削除(Cloud Runサービス作成時にcatで止まってしまうため。こちらの部分はDockerファイルで対応)

変更点3:Dockerfileで追加更新するapacheの設定ファイル

config.secret.inc.php※docker-entrypoint.shで削除した部分をDockerfileでファイル追加

ports.conf(port設定)

 

sites-available/000-default.conf(port設定とIP制限)

 

Cloud Runサービス作成

  • コンテナイメージ:DockerfileでbuildしてContainer RegistryにPUSHしたイメージを指定します。
  • 環境変数:Cloud  Runで動作するアプリケーションからCloud SQLへの接続はCloud SQL Proxyを経由して接続するのでアプリケーションからUnix Socketを使って接続するため
    • PMA_HOST /cloudsql/{{PROJECT_ID:REGION:INSTANCE_ID}}
    • PMA_SOCKET /cloudsql/{{PROJECT_ID:REGION:INSTANCE_ID}}
  • Cloud SQL接続:接続対象のCloud SQLインスタンスを選択

 

上記内容でサービスを作成するとphpMyAdminのサービスが作成されます。

 

まとめ

dockerhubのDockerfileをbuildしたイメージをそのままCloud Runのサービス作成で使用できると思ってましたがうまくいかなかったので手こずりました。

Cloud Runはコンテナで動作するため、Cloud Functionsとは違ってOS、言語を自分で決めることができて非常に使いやすいです。