我有一个 rails 应用程序,正在尝试使用 docker-compose 在本地进行容器化。我不断从 docker-compose 收到“数据库不存在”错误,但数据库名称是...
我有一个 Rails 应用程序,正在尝试使用 本地容器化 docker-compose
。我不断收到“数据库不存在”错误, docker-compose
但数据库名称是我不再使用的名称。以下是错误消息:
db-1 | 2024-08-02 20:41:07.758 UTC [187] 严重错误:数据库“climate_control”不存在
该项目名为“Climate Control”,数据库命名遵循约定“climate_control_[环境名称]”——这是我的 database.yml 文件:
default: &default
adapter: postgresql
encoding: unicode
pool: 5
development:
<<: *default
host: db
database: climate_control_development
username: <%= ENV['POSTGRES_USER'] %>
password: <%= ENV['POSTGRES_PASSWORD'] %>
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: climate_control_test
username: climate_control
password: temp
production:
database: climate_control_prod
username: climate_control
password: temp
其中没有名为“climate_control”的内容。我确实有一个名为“climate_control”的用户,但我看不出这会如何影响项目尝试使用的数据库的名称。
在 docker-compose.yml 中 POSTGRES_DB
, POSTGRES_USER
指定了一些环境变量( POSTGRES_PASSWORD
、 和 POSTGRES_DB
设置正确。以下是整个文件:
# version: '3' # obsolete
services:
web:
build: .
command: bundle exec puma -C config/puma.rb
volumes:
- .:/app
ports:
- "3000:3000"
- "3001:3001" # for debugging
depends_on:
- db
environment:
RAILS_ENV: development
db:
image: postgres:14
volumes:
- /opt/homebrew/var/postgresql@16:/var/lib/postgresql/data
environment:
POSTGRES_DB: climate_control_development
POSTGRES_USER: climate_control
POSTGRES_PASSWORD: temp
healthcheck:
test: ["CMD-SHELL", "pg_isready -U climate_control"]
interval: 10s
timeout: 5s
retries: 5
我曾尝试重建docker镜像:
docker-compose down
docker-compose up --build
我已经清除了 Rails 缓存:
docker-compose exec web rails tmp:cache:clear
我已从 tmp/
目录中删除了所有内容:
rm -rf tmp/*
我搜索了代码库中所有字符串“climate_control”的实例,只找到了用户名。整个项目可以在 https://github.com/fredwillmore/climate-control - 它没有任何专有性,我只是试图创建一个简历项目。
我没有什么主意,我欢迎任何建议!