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

Docker构建时go mod download卡顿问题求助

解决Docker构建时go mod download卡在filippo.io/edwards255919的问题

1. 修复GOPROXY重复设置问题

你的Dockerfile里连续两次设置GOPROXY,第二次的direct会覆盖第一次的代理地址,导致Go模块下载时没有使用代理加速。调整为单次设置有效的代理地址,比如国内的公共代理:

FROM golang:latest
WORKDIR /app
# 使用国内代理+direct作为 fallback
ENV GOPROXY=https://goproxy.cn,direct
COPY go.mod .
COPY go.sum .
RUN go mod download 
COPY . .
RUN go build -o ./out/dist .

2. 采用vendor模式跳过模块下载

本地已能正常编译,说明依赖已存在本地。执行go mod vendor生成包含所有依赖的vendor目录,然后修改Dockerfile直接使用本地依赖构建:

FROM golang:latest
WORKDIR /app
COPY go.mod .
COPY go.sum .
COPY vendor ./vendor
COPY . .
# 指定使用vendor目录构建
RUN go build -mod=vendor -o ./out/dist .

3. 更换基础镜像或调整Docker网络

  • 换成国内镜像源的Go基础镜像,比如阿里云的镜像:
FROM registry.cn-hangzhou.aliyuncs.com/google_containers/golang:latest
WORKDIR /app
ENV GOPROXY=https://goproxy.cn,direct
COPY go.mod .
COPY go.sum .
RUN go mod download 
COPY . .
RUN go build -o ./out/dist .
  • 检查Docker网络连通性:在Dockerfile中添加网络测试命令,确认能否访问目标地址:
FROM golang:latest
WORKDIR /app
ENV GOPROXY=https://goproxy.cn,direct
COPY go.mod .
COPY go.sum .
# 测试网络连通性
RUN ping -c 3 filippo.io && go mod download 
COPY . .
RUN go build -o ./out/dist .

如果网络不通,修改Docker daemon的DNS配置(编辑/etc/docker/daemon.json):

{
  "dns": ["8.8.8.8", "114.114.114.114"]
}

修改后重启Docker服务:systemctl restart docker

内容的提问来源于stack exchange,提问作者Mohan Raj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 19:27:17