【问题标题】:Rails, Postgres and Docker having PG::ConnectionBad "/var/run/postgresql/.s.PGSQL.5432"?Rails、Postgres 和 Docker 有 PG::ConnectionBad “/var/run/postgresql/.s.PGSQL.5432”?
【发布时间】:2016-09-22 18:23:26
【问题描述】:

我正在使用容器进行开发并使用 docker-compose 来提升它们。 我会不时运行docker-compose down 并重建容器。大多数时候我都会收到此错误

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

我不明白为什么 Rails 会抱怨 Postgres 不存在,如果整个容器正在重新构建。此外,错误会在一段时间后消失,无需我做任何其他停止、重新启动或重建容器的操作。 我转而使用容器进行开发,以准确摆脱此类烦人的问题。

这是我docker-compose.yml的内容

version: '2'
services:
  users:
    build:
      context: '.'
    links:
      - postgres
      - redis
    volumes:
     - ".:/app/users/"
    working_dir: /app/users
    command: [rails, server, -p, "3000", -b, 0.0.0.0]
    ports:
    - "3000:3000"

  postgres:
    image: postgres:9.5
    environment:
      POSTGRES_DB: somedb
      POSTGRES_USER: someuser
      POSTGRES_PASSWORD: somepass

  redis:
    image: redis:latest
    command: redis-server
    ports:
      - "6379:6379"
    volumes:
      - "redis:/var/lib/redis/data"

volumes:
  redis:

database.yml

development:
  <<: *default
  database: somedb
  user: someuser
  password: somepass
  host: postgres
  port: 5432

我是否缺少 postgres 服务上的额外配置,还是与用户容器有关?

【问题讨论】:

  • 你解决过这个问题吗?
  • @creimers 不完全是。查看已接受的答案。

标签: ruby-on-rails postgresql docker-compose


【解决方案1】:

添加 docker-compose.yml 用户

 version: '2'
 services:
   users:
    environment:
        DATABASE_URL:postgres://user:pass@postgres:5432/datex_dev?pool=5&encoding=utf-8
   ....

在database.yml中添加

 development:
   <<: *default
   url: <%= ENV['DATABASE_URL'] %>  
   ...

Docker - PG::ConnectionBad

【讨论】:

    【解决方案2】:

    作为记录,遗憾的是,当down@ 容器并再次构建它们时,问题就消失了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-06
      • 2014-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-15
      • 2017-08-19
      • 2021-02-21
      相关资源
      最近更新 更多