You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu18.04使用Docker Compose构建Rails容器时rubygems解析失败如何解决

解决方案

你遇到的报错核心是Docker容器内部域名解析失效,宿主网络正常不代表容器隔离网络内的DNS配置可用,按以下步骤操作即可解决:

  • 首先确认拼写正确性:你执行dig +short rubygmes.org无返回是因为目标域名拼写错误,正确RubyGems官方域名为rubygems.org,先检查Gemfile、bundler配置中是否存在拼写错误,如果有直接修正即可。
  • 方案1:替换国内RubyGems镜像绕开境外解析问题
    在Dockerfile的RUN bundle install步骤之前,添加全局源配置指令:
    RUN bundle config set --global source 'https://gems.ruby-china.com'
    也可以直接修改项目Gemfile的第一行源地址为上述国内镜像地址,即可完全避开rubygems.org的解析需求。
  • 方案2:修正Docker服务DNS配置
    编辑宿主机/etc/docker/daemon.json文件(文件不存在则手动创建),添加公共DNS配置项:
    {
      "dns": ["223.5.5.5", "8.8.8.8", "114.114.114.114"]
    }
    
    保存后重启Docker服务生效:
    sudo systemctl restart docker
  • 方案3:临时使用宿主网络执行构建
    如果修改DNS后仍未生效,可以在执行构建命令时指定使用宿主网络,绕开容器网络隔离的DNS限制:
    docker-compose run --no-deps --network host web rails new . --force --database=postgresql

执行完上述操作后,可先运行测试命令验证容器内解析是否正常:
docker run --rm busybox nslookup rubygems.org
如果返回正常IP地址,即可重新执行构建流程。

内容的提问来源于stack exchange,提问作者Abdel P.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 03:09:03