Windows上のDockerコンテナからRDSへ接続したい
WindowsのDocker DesktopでPHP(Laravel)とmysqlのコンテナを作成しプログラムを書いています。
AWS RDS上のデータを扱う必要ができましたが、下の2種類のエラーで踏み台サーバーを経由しての接続がうまくいきません。
SQLSTATE[HY000] [2002] Connection refused (SQL: select * from `sessions` where `id` = P***********kBYKtSkPPZT87c limit 1) SQLSTATE[HY000] [1045] Access denied for user 'root'@'172.23.0.3' (using password: YES) (SQL: select * from `sessions` where `id` = l3TZMHAMqrC***********QB3mXkwRVo limit 1)
必要な作業は以下のように理解しています。
- [phpコンテナ]->[windows] コンテナ内の/etc/hostsでwindowsマシンのIPを確認し、mysqlの接続先を向ける。
- [windows]->[踏み台サーバー] sshポートフォワーディングで、ローカルの3306ポートとRDSのエンドポイントの3306をつなげる。
- [踏み台サーバー]->[RDS] セキュリティグループに3306が登録されていることを確認する。
以下が試したことです。
[phpコンテナ]->[windows]
コンテナから見たwindowsのアドレスを確認する。起動ごとに変動する。
127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.23.0.2 f3f96a1f0a67
一番下の172.23.0.2をmysqlのホストとして設定しました。
[windows]->[踏み台サーバー]
まずSSH接続が行えるかを確認し、正常に接続できたのでポートフォワーディングの設定を行いました。
エラーは出ませんでしたが、RDSではpingを受け付けないそうで、正常に繋がっているかが確認できませんでした。
ssh -f -N -L 3306:[RDSのエンドポイント]:3306 -i [pemキーのパス] -4 -l ec2-user ec2-user@[踏み台サーバーのIPアドレス]
[踏み台サーバー]->[RDS]
セキュリティグループのインパウンドルールに3306が登録されていることを確認しました。
上記の作業を行い、コンテナ内からSSHポートフォワードを行う等も試しましたが、状況は変わりませんでした。
確認すべきことなどがありましたらご教授ください。
補足情報(FW/ツールのバージョンなど)
Windows10
Docker Desktop 4.4.3
あなたの回答
tips
プレビュー