【发布时间】:2021-11-05 14:46:42
【问题描述】:
我一直在尝试在 docker 上设置我的 rails 项目以及 postgres 数据库,但由于某种原因,我的 rails 项目无法连接到数据库
我可以使用像 Psequel 这样的数据库工具连接到数据库,从而证明数据库实际上正在运行并且良好。但是由于某些奇怪的原因,我的 rails 应用程序无法连接到数据库。这是我得到的错误
PG::ConnectionBad: could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5435?
could not connect to server: Address not available
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5435?
以下是 docker compose 文件。
version: "3"
networks:
app:
driver: bridge
volumes:
database:
abc-database:
services:
testproject:
networks:
app:
aliases:
- testproject
image: 34543.aws.testprojectimage:ac877887
environment:
DATABASE_HOST: localhost
# DATABASE-HOST: abc-db
DATABASE_USER: test
DATABASE_PASSWORD: testpass
DATABASE_NAME: abc
DATABASE_PORT: 5435
# DATABASE_URL: postgres://test:testpass@localhost:5435/abc
LOCAL_TESTS: 1
ports:
- 4000:3000/tcp
depends_on:
- "abc-database"
abc-database:
container_name: abc-db
networks:
app:
aliases:
- abc-db
image: postgres:10.5
environment:
POSTGRES_PASSWORD: testpass
POSTGRES_USER: test
POSTGRES_DB: abc
ports:
- 5435:5432
# volumes:
# - abc-database:/var/lib/postgresql/data
-
我试图通过运行
docker exec -it testproject sh进入容器并执行手动活动记录连接来确保连接对象具有正确的凭据,并且所有凭据都是正确的。但是连接失败并出现上述相同的错误。 -
我也尝试在环境变量中使用 database_url,但也没有用。
-
我为 postgres 数据库使用了一个卷,但为了排除 postmaster 文件出现问题的可能性,我将其删除,因此每次启动项目时都会设置一个新数据库。但我继续得到同样的错误
-
我尝试将
abc-db用作DATABASE-HOST,但效果不佳
非常感谢任何建议。谢谢。
【问题讨论】:
-
你需要使用另一个容器的Compose服务名
abc-database和标准的MySQL端口5432;ports:未在此处使用(也不是必需的)。您还可以删除container_name:和networks:设置以简化操作。
标签: ruby-on-rails postgresql docker docker-compose dockerfile