【发布时间】:2020-07-21 07:50:09
【问题描述】:
我是 DevOps 领域的新手,我正在 docker-compose 上运行一个简单的 rails 应用程序。当我在 config.yml 应用程序中硬编码 DB 凭据时工作正常,但是当我引用 docker-compose.yaml 中声明的 ENV 变量时,我的应用程序容器没有与 DB 建立连接。
下面是我的 config.yaml
default: &default
adapter: mysql2
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
database: <%= ENV['DB_DATABASE']%>
host: <%= ENV['DB_HOST'] %>
user: <%= ENV['DB_USERNAME'] %>
password: <%= ['DB_PASSWORD'] %>
timeout: 5000
socket: /var/run/mysqld/mysqld.sock
development:
<<: *default
host: <%= ENV['DB_HOST'] %>
user: <%= ENV['DB_USERNAME'] %>
password: <%= ['DB_PASSWORD'] %>
socket: /var/run/mysqld/mysqld.sock
database: <%= ENV['DB_DATABASE']%>
production:
<<: *default
database: <%= ENV['DB_DATABASE']%>
host: <%= ENV['DB_HOST'] %>
user: <%= ENV['DB_USERNAME'] %>
password: <%= ENV['DB_PASSWORD'] %>
socket: /var/run/mysqld/mysqld.sock
下面是我的 docker-compose.yaml 文件。
version: '3'
services:
webapp:
build: .
command: bash -c "bundle exec rails s -p 3001 -b '0.0.0.0'"
ports:
- '3001:3001'
volumes:
- '.:/data/checklist'
depends_on:
- db
environment:
DB_USERNAME: "root"
DB_PASSWORD: "Mission2019"
DB_DATABASE: "list"
DB_PORT: 3306
DB_HOST: db
RAILS_ENV: production
RAILS_MAX_THREADS: 5
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: "list"
MYSQL_ROOT_PASSWORD: "Mission2019"
MYSQL_USERNAME: "root"
MYSQL_PASSWORD: "Mission2019"
ports:
- '3307:3306'
expose:
- '3306'
我得到以下错误
webapp_1 | ============= END WARNING FROM mysql2 =========
db_1 | 2020-07-21T07:44:59.886096Z 2 [Note] Access denied for user 'root'@'172.21.0.3' (using password: YES)
webapp_1 | I, [2020-07-21T07:44:59.887550 #1] INFO -- : [e78ce127-bb02-45f2-be3a-91b05e564b4b] Completed 500 Internal Server Error in 40ms
webapp_1 | F, [2020-07-21T07:44:59.889463 #1] FATAL -- : [e78ce127-bb02-45f2-be3a-91b05e564b4b]
webapp_1 | F, [2020-07-21T07:44:59.889559 #1] FATAL -- : [e78ce127-bb02-45f2-be3a-91b05e564b4b] Mysql2::Error (Access denied for user 'root'@'172.21.0.3' (using password: YES)):
webapp_1 | F, [2020-07-21T07:44:59.889600 #1] FATAL -- : [e78ce127-bb02-45f2-be3a-91b05e564b4b]
webapp_1 | F, [2020-07-21T07:44:59.889658 #1] FATAL -- : [e78ce127-bb02-45f2-be3a-91b05e564b4b] mysql2 (0.4.10) lib/mysql2/client.rb:89:in `connect'
webapp_1 | [e78ce127-bb02-45f2-be3a-91b05e564b4b] mysql2 (0.4.10) lib/mysql2/client.rb:89:in `initialize'
webapp_1 | [e78ce127-bb02-45f2-be3a-91b05e564b4b] activerecord (5.2.4.3) lib/active_record/connection_adapters/mysql2_adapter.rb:22:in `new'
webapp_1 | [e78ce127-bb02-45f2-be3a-91b05e564b4b] activerecord (5.2.4.3) lib/active_record/connection_adapters/mysql2_adapter.rb:22:in `mysql2_connection'
webapp_1 | [e78ce127-bb02-45f2-be3a-91b05e564b4b] activerecord (5.2.4.3) lib/active_record/connection_adapters/abstract/connection_pool.rb:830:in `new_connection'
webapp_1 | [e78ce127-bb02-45f2-be3a-91b05e564b4b] activerecord (5.2.4.3) lib/active_record/connection_adapters/abstract/connection_pool.rb:874:in `checkout_new_connection'
webapp_1 | [e78ce127-bb02-45f2-be3a-91b05e564b4b] activerecord (5.2.4.3) lib/active_record/connection_adapters/abstract/connection_pool.rb:853:in `try_to_checkout_new_connection'
【问题讨论】:
-
您需要将权限授予您的用户。在此处阅读更多信息chartio.com/resources/tutorials/…
标签: ruby-on-rails ruby docker docker-compose