[Serverless] localhost が connection refused になる
何度確認しても接続情報は間違っていない。でも connection refused になってしまう。
発生している現象
DB の接続情報を以下のようにして
local.yml
DB_USER: root
DB_PASSWORD: root
DB_HOST: localhost
DB_PORT: 3306
DB_NAME: default_db
Serverless でコードを実行すると
$ sls invoke local --stage local --useDocker
接続できない
connection refused.
ただ、コードを Serverless を通さずに実行する(今回は Golang なのでバイナリを直接実行する)と接続できる
どうやら Serverless ないし Docker を使っていることに問題があるらしい 🤔
解決策
DB_HOST
の値を localhost
から host.docker.internal
に書き換える。
local.yml
- DB_HOST: localhost
+ DB_HOST: host.docker.internal
コンテナ内からホスト上の localhost に接続するには、localhost
ではなく host.docker.internal
を指定する必要がある。