Docker MySQL:将 Rails 应用连接到 MySQL
Docker MySQL: Connecting a Rails app to MySQL
我有一个 rails 应用,我 运行 正在 Docker 中使用。我想运行MySQL放在一个单独的容器里,把两者连接起来
我的 docker-compose.yml
文件如下所示:
# docker-compose.yml
db:
image: "mysql:5.6"
ports:
- 3306
environment:
MYSQL_ROOT_PASSWORD: pass
MYSQL_DATABASE: dbname
MYSQL_USER: user
MYSQL_PASSWORD: pass
web:
build: .
ports:
- "80:80"
env_file:
- .env.development
links:
- db
volumes:
- "/webapp:/home/app/webapp"
当我 运行 docker-machine ip default
我得到 192.168.99.100
.
当我 运行 docker ps
我看到 mysql 正在 运行 端口上: 3306/tcp, 0.0.0.0:32782->32781/tcp
编辑:删除 mysql 容器并重启,端口实际上是 0.0.0.0:32784->3306/tcp
我正在使用 Sequel
gem,并使用以下参数连接到我的数据库:
Sequel::Model.db = Sequel.connect(adapter: 'mysql2',
database: 'dbname',
user: 'user',
password: 'pass',
host: '192.168.99.100',
port: '3306',
loggers: [logger] )
当我 运行 我的应用程序时,我得到:
rake aborted!
Sequel::DatabaseConnectionError: Mysql2::Error: Can't connect to MySQL server on '192.168.99.100' (111)
/var/lib/gems/2.0.0/gems/mysql2-0.3.18/lib/mysql2/client.rb:70:in `connect'
/var/lib/gems/2.0.0/gems/mysql2-0.3.18/lib/mysql2/client.rb:70:in `initialize'
/var/lib/gems/2.0.0/gems/sequel-4.23.0/lib/sequel/adapters/mysql2.rb:36:in `new'
/var/lib/gems/2.0.0/gems/sequel-4.23.0/lib/sequel/adapters/mysql2.rb:36:in `connect'
/var/lib/gems/2.0.0/gems/sequel-4.23.0/lib/sequel/connection_pool.rb:101:in `make_new'
// Lots more traces
知道我做错了什么吗?
尝试在您的连接设置中使用 link 名称作为 "host"。将 IP 地址更改为 "db".
我有一个 rails 应用,我 运行 正在 Docker 中使用。我想运行MySQL放在一个单独的容器里,把两者连接起来
我的 docker-compose.yml
文件如下所示:
# docker-compose.yml
db:
image: "mysql:5.6"
ports:
- 3306
environment:
MYSQL_ROOT_PASSWORD: pass
MYSQL_DATABASE: dbname
MYSQL_USER: user
MYSQL_PASSWORD: pass
web:
build: .
ports:
- "80:80"
env_file:
- .env.development
links:
- db
volumes:
- "/webapp:/home/app/webapp"
当我 运行 docker-machine ip default
我得到 192.168.99.100
.
当我 运行 docker ps
我看到 mysql 正在 运行 端口上: 3306/tcp, 0.0.0.0:32782->32781/tcp
编辑:删除 mysql 容器并重启,端口实际上是 0.0.0.0:32784->3306/tcp
我正在使用 Sequel
gem,并使用以下参数连接到我的数据库:
Sequel::Model.db = Sequel.connect(adapter: 'mysql2',
database: 'dbname',
user: 'user',
password: 'pass',
host: '192.168.99.100',
port: '3306',
loggers: [logger] )
当我 运行 我的应用程序时,我得到:
rake aborted!
Sequel::DatabaseConnectionError: Mysql2::Error: Can't connect to MySQL server on '192.168.99.100' (111)
/var/lib/gems/2.0.0/gems/mysql2-0.3.18/lib/mysql2/client.rb:70:in `connect'
/var/lib/gems/2.0.0/gems/mysql2-0.3.18/lib/mysql2/client.rb:70:in `initialize'
/var/lib/gems/2.0.0/gems/sequel-4.23.0/lib/sequel/adapters/mysql2.rb:36:in `new'
/var/lib/gems/2.0.0/gems/sequel-4.23.0/lib/sequel/adapters/mysql2.rb:36:in `connect'
/var/lib/gems/2.0.0/gems/sequel-4.23.0/lib/sequel/connection_pool.rb:101:in `make_new'
// Lots more traces
知道我做错了什么吗?
尝试在您的连接设置中使用 link 名称作为 "host"。将 IP 地址更改为 "db".