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

CentOS7服务器构建Ruby on Rails API Docker镜像失败求助

解决Docker构建时rubygems.org域名解析失败问题

问题核心

生产环境CentOS7服务器上的Docker构建容器无法解析rubygems.org域名,导致gem install bundler命令超时失败。

解决方案

1. 排查宿主机网络连通性

先确认CentOS7服务器本身能否正常解析目标域名:

ping rubygems.org
nslookup rubygems.org

如果宿主机也无法解析,修改宿主机DNS配置:

  • 编辑/etc/resolv.conf,添加可靠DNS服务器:
    nameserver 8.8.8.8
    nameserver 114.114.114.114
    
  • 重启网络服务:
    systemctl restart network
    

2. 配置Docker守护进程DNS

Docker默认继承宿主机DNS,若宿主机DNS正常但容器仍无法解析,直接配置Docker daemon:

  • 创建或编辑/etc/docker/daemon.json:
    {
      "dns": ["8.8.8.8", "114.114.114.114"]
    }
    
  • 重启Docker服务生效:
    systemctl restart docker
    
  • 重新执行构建:
    docker build -t api .
    

3. 构建时临时指定DNS

不想修改全局配置的话,可在构建命令中直接指定DNS:

docker build --dns 8.8.8.8 -t api .

4. 优化Dockerfile(可选)

为避免版本不一致并减少镜像层,合并RUN命令并指定与Gemfile.lock匹配的bundler版本:

FROM ruby:3.1.2

WORKDIR /app

COPY Gemfile Gemfile.lock ./

RUN gem install bundler:2.2.28 && bundle install

COPY . .

EXPOSE 3000

CMD ["rails", "server", "-b", "0.0.0.0"]

内容的提问来源于stack exchange,提问作者Vitor Costa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:55:05