はじめに
RDSはVPCで閉じられた環境のため、EC2などを踏み台にして、RDSに接続するみたいなことが多々あります。
また、MySQLをGUIで操作できる、phpMyAdminなんかをEC2に立てるとなると、
面倒だなぁ...と思い老けていたところ
あれ、これってもしかして...Dockerでできるんじゃ??
しかもContainerのマネージドサービスなら、楽できる‼︎
ということを思いついて、やってみたらサクッと出来たので書き残してみました。
事前準備(と言う名の割と組んじゃってる)
- RDSの作成
- ECSクラスタ(同一VPC)の作成
- ECRの作成
こちらが完了しており、Container imageがPushできる状態であること。
(割とこの辺は他の記事でもよしなに書いてるのでそちらをorz)
※RDSのセキュリティグループ port:3306
に、ECSのセキュリティグループIDを追加してあげれば大丈夫です。
phpMyAdminのContainer imageをPull
こちらの素晴らしい記事を参考に、phpMyAdminのContainer imageを作成していきます。
目的はあくまで、Container image作成ですので、phpmyadminの公式からpullしちゃいます。
docker run -it phpmyadmin/phpmyadmin:latest -p 80:80
動作確認として、Pull完了後にhttp://localhost
でphpMyAdminのログイン画面が表示されたらOK
ECRへPush
こちらは、ECRに、Push commandが表示されるので、詳しくは省略します...orz
Task Definitionの作成
FargateでもEC2どちらのタイプでも動くはず...(私はECSでやりました)
Task Definition作成で、肝となるのがContainer Definition
です。
Add Containerを押下して、以下を記述します。
* Container name : ユニークな名前でOK
* Image : <ECR_URI:CONTAINER_IMAGE_TAG>
* Memory Limits (MiB) : 環境に合わせて設定
* Port mappings : 80:80
* CPU units : 環境に合わせて設定
* Env Variables : 以下を入力(Key : Valueの形式)
PMA_ARBITRARY : 1
PMA_HOST : <RDS_ENDPOINT_URL>
PMA_PASSWORD : <RDS_USER_PASSWORD>
PMA_USER : <RDS_USER_ID>
環境変数をちゃんと入れておくさっくり動いてくれるのがいいですね。
(ECSのTask Definitionがdocker-composeライクなので、とっつきやすいのもGoodでしたw)
あとは、Taskを実行し、RUNNINGの状態になれば、RDSがphpMyAdminから繋がっちゃいます。
まとめ
今回はAWSの環境でしたが、その他のパブリッククラウドで用意されているDockerのマネージドサービスでも利用できるんじゃないかなと。
ECS側にDBの接続情報を持たせられるのも良いですね(この辺がcomposeっぽい)
あと、画像が無くてすいません...orz