🥺

Cloud Run上でRailsからCloud SQLに接続できない時は `host: localhost` が必要かも

2021/07/11に公開

環境

  • ruby: 3.0.1
  • rails: 6.1.3
  • Docker Image: ruby:3.0.1
  • MySQL(on CloudSQL): 8.0

書き方

[config/database.yml]
...

  <<: *default
  database: xxxx_production
  username: <%= ENV['DB_USERNAME'] %>
  password: <%= ENV['DB_PASSWORD'] %>
  socket: /cloudsql/project_id:asia-northeast1:name
  host: localhost <---- これ

説明

host: localhost が無いと ActiveRecord::ConnectionNotEstablished: Can't connect to MySQL server on '0.0.0.0' (115) が出て死んだ。
Google Cloudのドキュメントをいくつか見たけどこの指定は無い。自分が余計な設定を入れているか、ruby 2.XとかRails 5だと動くかもしれない。

App EngineでもCloud SQLに繋ぐ時は同じsocket指定の記述をするんだけど、同じことが起きるかもしれない。

参考

https://cloud.google.com/sql/docs/mysql/connect-run

Discussion