我有一个正在Docker中运行的Rails应用程序。我想在单独的容器中运行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
有任何想法我在这里做错了吗?
最佳答案
尝试在连接设置中将链接名称用作“主机”。将IP地址更改为“db”。