【发布时间】:2021-10-14 12:08:51
【问题描述】:
运行以下命令后
docker run --rm \
-it --name *****-db-setup \
839*******.dkr.ecr.us-east-1.amazonaws.com/****-backend:dev-latest \
bundle exec rake db:drop db:create db:migrate --trace
我得到了错误
** Invoke db:drop (first_time)
** Invoke db:load_config (first_time)
** Execute db:load_config
** Invoke db:check_protected_environments (first_time)
** Invoke environment (first_time)
** Execute environment
rake aborted!
PG::ConnectionBad: could not translate host name "db" to address: Name or service not known
知道这个连接错误可能来自哪里吗?如果我拿出一条线然后跑
docker run --rm \
-it --name ****-db-setup \
839*****.dkr.ecr.us-east-1.amazonaws.com/****-backend:dev-latest
我得到了 8 个错误
.env: line 1: $: command not found
.env: line 2: $: command not found
.env: line 3: $: command not found
.env: line 4: $: command not found
.env: line 5: $: command not found
.env: line 6: $: command not found
.env: line 7: $: command not found
.env: line 8: $: command not found
非常感谢任何见解。
config/database.yml
default: &default
adapter: postgresql
encoding: unicode
host: <%= ENV.fetch("DB_HOST") { "db" } %>
username: <%= ENV.fetch("DB_USER") { "postgres" } %>
port: <%= ENV["DB_PORT"] %>
password: <%= ENV["DB_PASS"] %>
# For details on connection pooling, see Rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development:
<<: *default
database: backend_development
test:
<<: *default
database: backend_test
production:
<<: *default
database: <%= ENV["DB_NAME"] %>
enter code here
【问题讨论】:
-
您的 rds 是否与实例在同一子网或 VPC 中?
-
您可以将
config/database.yml添加到您的问题中吗? -
@Marcin 是的,它在同一个 VPC 中。至于子网,RDS 有两个,而 EC2/ECS 有一个完全不同,根据架构图,它们不应该在同一个子网下,只是 VPC
-
@rmlockerd 我添加了它
-
看起来您需要在您的环境中设置
DB_HOST作为您的RDS 端点(应该类似于foo.something.region.rds.amazonaws.com)。您的database.yml的后备是使用主机db,这是连接错误中弹出的内容。
标签: ruby-on-rails amazon-web-services docker amazon-ec2