我在哪里指定Docker中的Postgres它应该运行并接受连接?

问题描述 投票:0回答:1

我正在尝试将使用Postgresql 9.5作为其数据库的现有Rails应用程序停靠。在我的docker-compose.yml中。在成功的“docker-compose build”之后,我可以运行“docker-compose up”命令并查看连接,但是当我导航到localhost时,我收到以下错误。

PG :: ConnectionBad无法连接到服务器:没有这样的文件或目录服务器是否在本地运行并接受Unix域套接字上的连接>“/ var / run / postgresql / .s.PGSQL.5432”?

这是我的docker-compose.yml中的内容

version: '2'
services:
  db:
    image: postgres:9.5
    restart: always
    volumes:
      - ./tmp/db:/var/lib/postgresql/9.5/main
    environment:
       POSTGRES_USER: username
       POSTGRES_PASSWORD: password
       POSTGRES_DB: hardware_development

  web:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db

从我所看到的,我需要在我的dockerfile或docker-compose.yml中的某个地方做一些规范,但我要么没有看到更改,要么以相同的错误结束。

我已经能够使用Docker自己的文档来使用Docker Compose创建一个带有postgres的新rails应用程序,在那里我看到“耶和华你在轨道上!”页面,但现在用我自己的代码,我什么都看不到。在docker之外运行应用程序也会向我显示测试页面,因此它不是我的rails应用程序中的代码或Docker之外的Postgres evnironment。

ruby-on-rails postgresql docker docker-compose
1个回答
0
投票

你的db docker-compose条目没有暴露任何端口。它需要暴露5432.添加一个端口线就像你有web一样。

编辑:我也不知道为什么你把restart: always添加到你的数据库容器,但我不建议为rails或几乎任何东西。

© www.soinside.com 2019 - 2024. All rights reserved.