【问题标题】:Ruby on Rails can't connect to database host in Docker containerRuby on Rails 无法连接到 Docker 容器中的数据库主机
【发布时间】:2020-06-25 01:30:12
【问题描述】:

此票证中列出了我的 Docker 设置以供参考: Ruby on Rails 4.1.8 Gem::LoadError for mysql2 gem

构建 Ruby Docker 映像 FROM ruby:2.1.3 工作正常,直到我运行 bundle exec rails server。此时抛出错误:

/usr/local/bundle/gems/mysql2-0.3.20/lib/mysql2/client.rb:70:in `connect': Unknown MySQL server host 'dokku-mariadb-runrite-production' (25) (Mysql2::Error)

MariaDB 实例是使用 MariaDB Dokku 插件创建的 Docker 容器。 MariaDB 实例的映像没有安装 OpenSSL,但我之前使用 Dokku 部署了更新的堆栈,因此不必担心。

会发生什么?

【问题讨论】:

    标签: ruby-on-rails docker dokku


    【解决方案1】:

    似乎无法解析主机名。可能的原因是以下之一:

    1. 实例名称不是您想象的那样。您可能需要确保启动 MariaDB docker 实例时的 --name 标志是正确的,或者覆盖 MariaDB 容器的 --hostname 以匹配您在 Ruby 容器中引用的名称。
    2. 这两个容器没有连接到同一个网络。您可以通过在使用 docker run 时在 --network 标志中指定它们来确保它们都在同一个网络上。

    您的 DNS 解析器设置可能还有一些不寻常的地方,但我猜根据这个问题,您没有做任何会改变默认设置的事情,所以我猜这不是一个因素。

    如果您使用 docker compose 或其他启动容器的方法,同样的问题也适用,但 docker-compose 在 YAML 中有网络和主机名的配置选项,并且 docker-compose 会悄悄地创建一些主机名别名您启动的每个实例(通常类似于 project_containername、containername 和 containername-replicanumber)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多