我正在尝试将使用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。
你的db
docker-compose条目没有暴露任何端口。它需要暴露5432.添加一个端口线就像你有web
一样。
编辑:我也不知道为什么你把restart: always
添加到你的数据库容器,但我不建议为rails或几乎任何东西。