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".