我试图将我的应用程序在Rails中与Postgresql连接,但我遇到了一个关于用户名的错误,但是,我已经检查了几次,一切似乎都没问题。我使用的是rails 7这是docker-compose文件:
version: "3.8"
services:
database:
image: "postgres:14-alpine"
ports:
- 5432:5432
environment:
- POSTGRES_USER=aventuraweb
- POSTGRES_PASSWORD=secret
- POSTGRES_DB=aventuraweb_development
volumes:
- postgres_data_development:/var/lib/postgresql/data
redis:
image: "redis:7"
ports:
- 6379:6379
volumes:
postgres_data_development: {}
字符串
这就是database.yml:
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development:
<<: *default
database: aventuraweb_development
username: aventuraweb
password: secret
host: localhost
型
我运行foreman,一切似乎都没问题,但当我试图到达页面时,我发现错误:
aventuraweb-database-1 | 2023-07-16 17:40:16.711 UTC [29] FATAL: password authentication failed for user "aventuraweb"
19:40:16 db.1 | aventuraweb-database-1 | 2023-07-16 17:40:16.711 UTC [29] DETAIL: Role "aventuraweb" does not exist.
19:40:16 db.1 | aventuraweb-database-1 | Connection matched pg_hba.conf line 100: "host all all all scram-sha-256"
18:21:12 web.1 | ActiveRecord::DatabaseConnectionError (There is an issue connecting to your database with your username/password, username: aventuraweb.
18:21:12 web.1 |
18:21:12 web.1 | Please check your database configuration to ensure the username/password are valid.
型
我试着修剪系统和网络几次,但我不知道下一步该怎么做任何线索发生了什么?谢谢你,谢谢
1条答案
按热度按时间hfyxw5xn1#
这看起来像是你试图从运行在主机上的Rails应用程序连接到运行在Docker内部的PostgreSQL数据库(即在Docker外部)。在这种情况下,数据库的主机不应该是localhost,而应该是在docker-compose.yml文件中指定的服务名称。
您应该将database.yml文件更新为以下内容:
字符串
另外,请确保您的Rails应用程序和PostgreSQL都是同一Docker网络的一部分。如果你的Rails应用没有在Docker中运行,你可能需要使用host.docker.internal作为主机,而不是数据库(尽管这可能会因操作系统而异)。
另外,请确保使用以下命令创建一个新的docker介质,以防止由于旧文件而导致损坏:
型