docker 踩坑笔记之 psql: could not connect to server

最近在用docker跑rails,也遇到了一些坑,这里记录一下。

首先build项目:

docker-compose build

然后就开始报错了:

psql: 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"?

这里报错是说找不到 /var/run/postgresql/.s.PGSQL.5432 文件,但我本地运行是没问题的。于是去找docker从入门到实践这本书的docker rails 例子, 地址在这里:发现我的database.yml文件不对。我的是这样的:

default: &default
  adapter: postgresql
  encoding: unicode`请输入代码`
  # For details on connection pooling,www.97yingyuan.org see Rails configuration guide
  # http://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

Rails 默认读取的数据库目标是 localhost ,我们需要手动指定容器的 db 。同样的,还需要把用户名修改成和 postgres 镜像预定的一致。 打开最新生成的 database.yml 文件。用以下内容替换:

default: &default
  adapter: postgresql
  encoding: unicode
  # For details on connection pooling, see Rails configuration guide
  # http://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: postgres
  host: db

这样再运行docker-compose build,成功build! 然后再跑起来docker-compose up,悲剧的又报错了:

ActiveRecord::NoDatabaseError (FATAL: database "heroku_app_development" does not exist

提示没有创建heroku_app_development数据库,OK,那就创建一个:

sudo docker ps #列出所有容器
sudo docker exec -it [container ID] /bin/bash #进入postgres
sudo su - postgres #切换到postgres用户,因为这个用户有createdb权限
ceratedb heroku_app_development #heroku_app_development 创建完成!

再运行docker-compose up,又报错:

Migrations are pending. To resolve this issue, run:

    bin/rails db:migrate RAILS_ENV=development

railser应该很熟悉,数据库迁移,进入web容器:
sudo docker exec -it [container ID] /bin/bash #进入web容器
rails db:migrate #迁移成功!

原文地址:https://www.cnblogs.com/tianshifu/p/8127845.html

时间: 2024-09-30 19:04:53

docker 踩坑笔记之 psql: could not connect to server的相关文章

“psql: could not connect to server: Connection refused” Error when connecting to remote database

问题: I am trying to connect to a postgres database installed in a remote server using the following command: psql -h host_ip -U db_username -d db_name This the error that occurs: psql: could not connect to server: Connection refused Is the server runn

psql: could not connect to server: No such file or directory

postgresql报错: psql: could not connect to server: No such file or directory         Is the server running locally and accepting         connections on Unix domain socket "/tmp/.s.PGSQL.5432"? 1.可能是服务没启动,以下3中启动方式: (1) postmaster -D /usr/local/pgsq

问题解决:psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket &quot;/var/run/postgresql/.s.PGSQL.5432&quot;?

错误提示: psql: 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"? 出现该问题的很多,以下是目前碰到的几种情况,之后碰到继续补充: 1.删除了/tmp路径中的.s.PGSQL.5432 与.s.

React 踩坑笔记

props可以用两种理解,一是可以被当做构建React节点的参数,二是可以被理解为HTML标签的属性.具体如下 当props与一个已知HTML属性相同时,当他被加入最终DOM中的HTML元素时,它就是该元素的属性: 当被传入React.createElement()中当做参数时,也可以是React node实例里的各种值. 一些特殊的用法,比如说key.ref.dangerouslySetInnerHtml React Stateless Function Component(无状态函数组件)

Java踩坑笔记:ObjectIOStream与IOStream的各种装饰器(先挖个坑,以后再来详细填)

Java的序列化和ObjectStream真是一个大坑.. 先不说多线程环境下的问题,在单线程里,一个Socket只能保持一个ObjectOutputStream,原因好像是在于ObjectOutputStream有锁机制或是阻塞之类的东西,否则会导致接受方出现"StreamCorruptedException : invalid type code AC",同理ObjectInputStream也只能保持一个,否则接收方会出现header错误的相关异常. 据说原因是ObjectOut

Laravel踩坑笔记——illuminate/html被抛弃

起因 在使用如下代码的时候发生报错 {!! Form::open() !!} 错误信息 [Symfony\Component\Debug\Exception\FatalErrorException] Call to undefined method Illuminate\Foundation\Application::bindShared() 原因 在Stack Overflow找到相关问题(Call to undefined method Illuminate\Foundation\Appli

appium 使用过程问题踩坑-笔记

问题1:虚拟设备选用问题 运行脚本抛出异常,创建session对象失败 排查过程:在进入cmd模式下: ①adb devices   --ok ②appium-doctor  --ok ③appium  --ok ④选择合适的虚拟设备 --解决问题 问题分析:某些虚拟机版本兼容性问题,导致无法获取虚拟机的信息,创建session对象失败

redis集群搭建踩坑笔记

推荐参考教程:https://blog.csdn.net/pucao_cug/article/details/69250101 错误: from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /usr/local/redis-3.0.6/src/redis-trib.rb:25:in `<main>' 解决: gem install redis (最新) sudo gem install

【服务器踩坑】SSMS链接Ubuntu上的SQL Server 2019 报错 TCP Provider: Error code 0x2746

昨天在一台Ubuntu18.04.2 上安装了SQL Server 2019 for Linux 服务正常启动了,但是却无法通过命令行工具或者远程Windows机器上的SSMS链接. SSMS错误是 Sqlcmd的错误是 Microsoft ODBC Driver 17 for SQL Server : TCP Provider: Error code 0x2746 关闭了防火墙,还是不行. 无奈访问了一下著名的同性交友网站Stackoverflow,其中有个帖子提到了这是由于SSL版本不一致造