dockerコンテナ内からホストを介してcloud sqlに接続する方法

docker
苦戦しましたがやり方はシンプルなのでドキュメントとして残しておきます。

1,Cloud SQL API を有効にする
2,プロキシをインストールする
3,サービス アカウントを作成する
4,プロキシを開始する

まずは、google公式をみてproxy環境を整えます。
Cloud SQL Proxy を使用して MySQL クライアントを接続する  |  Cloud SQL for MySQL

2,自分の環境に合わせてproxyをインストールしてください。
Cloud SQL Proxy を使用して MySQL クライアントを接続する  |  Cloud SQL for MySQL

ちなみにgoogle sdkが入っていない方は入れてください。

次に、
./cloud_sql_proxy -instances=インスタンス接続名=tcp:3306

ホストから上のコマンドを実行します。
proxyが起動します。
インスタンス接続名は、google sqlの概要に記載してあります。

Ready for new connections の表示が出たらproxyがオンになりました。
proxyをオンにした状態でないと接続ができないのでターミナル を複数使います。
次にコンテナに入ります。

docker exec -it コンテナID /bin/bash

を使用します。

そしてコンテナからホストIPを調べます。

ping host.docker.internal
上記のコマンドを叩くとホストにpingを送ります。
これで自身のホストIPがわかると思うので
コンテナ内から

mysql -u root -p --host ホストのIPアドレス
を実行するとcloud sqlに接続することができます。

 

コメント

タイトルとURLをコピーしました