Golang+PostgreSQL Docker-Compose构建失败求助
解决Golang+PostgreSQL Docker-Compose构建时go mod download超时问题
错误根源
从报错信息看,容器无法解析proxy.golang.org的DNS地址,核心问题有两个:
- 自定义的Docker子网
127.0.0/24属于本地回环地址段,容器使用该子网会导致网络路由异常,无法正常访问外部网络。 - 国内环境访问官方Go代理
proxy.golang.org大概率存在网络延迟或访问限制。
解决方案
1. 修复Docker网络配置
将docker-compose.yml中的子网替换为合法私有子网段(如192.168.100.0/24),同时修正PostgreSQL端口映射错误:
version: '3.8' networks: net_mastertest: driver: bridge ipam: config: - subnet: 192.168.100.0/24 # 替换为非回环私有子网 services: server: build: ./ command: ./server ports: - 8000:8000 depends_on: - db networks: - net_mastertest db: restart: always image: postgres:latest env_file: - .env environment: - POSTGRES_USER=${DB_USER} - POSTGRES_PASSWORD=${DB_PASSWORD} - POSTGRES_DB=${DB_NAME} ports: - 5555:5432 # 修正:PostgreSQL默认端口为5432,原映射错误 networks: - net_mastertest
2. 替换Go模块代理为国内镜像
在Dockerfile中添加国内Go代理配置,加速依赖下载:
FROM golang:1.20 WORKDIR /app RUN go version ENV GOPATH=/ # 配置国内Go代理,解决官方代理访问问题 ENV GOPROXY=https://goproxy.cn,direct COPY ./ ./ RUN go mod download RUN go build -o server ./main.go CMD ["./server"]
3. 执行构建
先清理现有容器,再重新构建环境:
docker-compose down docker-compose up --build
内容的提问来源于stack exchange,提问作者Neverhood
相关产品推荐
相关产品推荐

