ruby-on-rails 连接在谷歌云上运行的Rails 5应用程序通过套接字运行到谷歌云SQL示例的错误问题

egdjgwm8  于 2023-04-08  发布在  Ruby
关注(0)|答案(2)|浏览(134)

当我使用Google Cloud Run服务时,我的Docker容器将返回错误:

PG::ConnectionBad: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

我已经在相关项目上启用了cloud sql admin api。我用ssh'ed进入我正在运行的示例,并在google cloud shell中使用GCP服务,并检查/var/run/postgresql/.s.PGSQL.5432。没有可用的。Google cloud run docks说将套接字的指定设置为/cloudsql/下,但那里似乎也不存在套接字。
在cloud sql/run open issues或issue tracker中没有任何东西表明这应该是一个问题。
Deploy命令使用了--add-cloudsql-instances标志,没有错误,所以我相信应该没有问题。
相关数据库.yml节:

staging:
  adapter: postgresql
  encoding: utf8
  pool: 5
  timeout: 5000
  database: project_staging
  username: project_staging
  password: <%= Rails.application.credentials[:db_password] %>
  socket: "/cloudsql/my-project-name:asia-northeast1:project-database-name/"

用于设置容器的停靠文件-

FROM ruby:2.6.2

ARG environment
// Bunch of env code

RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
RUN mkdir /myapp
WORKDIR /usr/src/app
RUN gem install bundler
COPY Gemfile Gemfile.lock ./
ENV BUNDLE_FROZEN=true
RUN bundle install
COPY . .

# Add a script to be executed every time the container starts.
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000

ENV RAILS_LOG_TO_STDOUT=true

除了postgresql-client,我还需要安装其他东西吗?
几乎可以肯定是不相关的,但开始脚本:

cd /usr/src/app

bundle exec rake db:create

bundle exec rake db:migrate

# Do some protective cleanup
> log/${RAILS_ENV}.log
rm -f tmp/pids/server.pid

bundle exec rails server -e ${RAILS_ENV} -b 0.0.0.0 -p $PORT

老实说,我很困惑。是配置问题吗?云运行问题吗?我是不是错过了什么包?我希望它在启动时可以连接到套接字而不会出现问题。

z6psavjg

z6psavjg1#

我已经按照这个中等指南(部分1234)创建了一个Cloud Run with Ruby,并将其连接到一个Cloud SQL示例,没有任何问题,你能试着将它与你的部署进行比较,甚至试着按照步骤来看看你所做的是否与他们在那里解释的不同吗?
此外,如果这有帮助,我在另一篇文章中发现了一个类似的案例,他们面临着同样的问题,即使它没有部署在Cloud Run中,可能会有所帮助。另一个Medium post也解决了同样的问题,并给出了一组解决方案。

e4yzc0pl

e4yzc0pl2#

此错误消息显示您的应用尝试连接到“default localhost”套接字文件(/var/run/postgresql/.s.PGSQL.5432),而不是/cloudsql/my-project-name:asia-northeast1:project-database-name/套接字文件。
这意味着您的Rail应用程序数据库配置中的HOST值为“empty”或“localhost”。您应该尝试从Rail应用程序中转储数据库配置并更正此值。

相关问题