当我使用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
老实说,我很困惑。是配置问题吗?云运行问题吗?我是不是错过了什么包?我希望它在启动时可以连接到套接字而不会出现问题。
2条答案
按热度按时间z6psavjg1#
我已经按照这个中等指南(部分1,2,3和4)创建了一个Cloud Run with Ruby,并将其连接到一个Cloud SQL示例,没有任何问题,你能试着将它与你的部署进行比较,甚至试着按照步骤来看看你所做的是否与他们在那里解释的不同吗?
此外,如果这有帮助,我在另一篇文章中发现了一个类似的案例,他们面临着同样的问题,即使它没有部署在Cloud Run中,可能会有所帮助。另一个Medium post也解决了同样的问题,并给出了一组解决方案。
e4yzc0pl2#
此错误消息显示您的应用尝试连接到“default localhost”套接字文件(/var/run/postgresql/.s.PGSQL.5432),而不是
/cloudsql/my-project-name:asia-northeast1:project-database-name/
套接字文件。这意味着您的Rail应用程序数据库配置中的HOST值为“empty”或“localhost”。您应该尝试从Rail应用程序中转储数据库配置并更正此值。