Ruby on rails Docker compose给定URI::InvalidURIError:方案postgresql不接受注册表部分:$DB_USER:$DB_PASSWORD@$DB_主机:端口(orbad主机名?)

Ruby on rails Docker compose给定URI::InvalidURIError:方案postgresql不接受注册表部分:$DB_USER:$DB_PASSWORD@$DB_主机:端口(orbad主机名?),ruby-on-rails,docker,docker-compose,Ruby On Rails,Docker,Docker Compose,我正在为ruby应用程序使用多容器。这些容器工作正常,但当使用docker compose运行app rails db:create创建数据库时,我遇到以下错误。 rails中止! URI::InvalidURIError:方案postgresql不接受注册表部分:$DB\u USER:$DB\u PASSWORD@$DB\u主机:端口(orbad主机名?) docker compose文件的一个片段如下所示 db: image: postgres:9.4 volumes_from: - d

我正在为ruby应用程序使用多容器。这些容器工作正常,但当使用
docker compose运行app rails db:create创建数据库时,我遇到以下错误。
rails中止!
URI::InvalidURIError:方案postgresql不接受注册表部分:$DB\u USER:$DB\u PASSWORD@$DB\u主机:端口(orbad主机名?)

docker compose文件的一个片段如下所示

db:
image: postgres:9.4
volumes_from:
  - data
environment:
  POSTGRES_USER: cpostgres
  POSTGRES_DB: micro_login_db
ports:
  - 5432

app:
build: .
depends_on:
  - db
volumes:
  - .:/webapp
command: rails server -p 3000 -b 0.0.0.0
ports:
  - 3000:3000
environment:
   DB_HOST: db
   DB_USER: cpostgres
   POSTGRES_DB: micro_login_db
   POSTGRES_TEST_DB: micro_login_test
其他人建议我创建一个名为
application.yml
的文件,其中包含以下详细信息

DB_USER: 'cpostgres'
DB_PASSWORD: ''
DB_HOST: 'db'
POSTGRES_DB: 'micro_login_db'
port: 5432
最后是
database.yml
文件

default: &default
adapter: postgresql
template: template0
encoding: unicode
username: <%= ENV['DB_USER'] %> 
database: <%= ENV['POSTGRES_DB'] %>
host: <%= ENV['DB_HOST'] %>
pool: 5
timeout: 5000

development:
  <<: *default
default:&default
适配器:postgresql
模板:template0
编码:unicode
用户名:
数据库:
主持人:
游泳池:5
超时:5000
发展:

您的
POSTGRES\u DB
值带有下划线。你有没有试过把它们去掉

带有下划线的主机名有时会出现问题


主机名中的下划线是我的情况。dash还行:|