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

Docker构建Golang应用报错:cannot find module providing package

解决Go项目Docker构建时找不到子包的问题

问题原因

你的Dockerfile仅复制了根目录下的*.go文件,而项目的子包(如config、auth等)存放在独立目录中,这些子目录没有被复制到容器内,导致Go编译器无法找到子包代码,从而抛出模块缺失错误。

解决方案

修改Dockerfile中的复制命令,将整个项目目录的内容(包括所有子包目录)复制到容器工作目录:

# syntax=docker/dockerfile:1

FROM golang:1.22.2

WORKDIR /app

# 下载依赖
COPY go.mod go.sum ./
RUN go mod download

# 复制整个项目代码(包括所有子目录)
COPY . .

# 构建可执行文件
RUN CGO_ENABLED=0 GOOS=linux go build -o /sac

EXPOSE 8080

CMD ["/sac"]

优化建议

为避免复制冗余文件(如.git、vendor、临时文件等),可以在项目根目录创建.dockerignore文件,内容如下:

.git
vendor
tmp
*.log

验证步骤

  1. 保存修改后的Dockerfile和.dockerignore文件
  2. 重新执行构建命令:docker build --tag sac-server .
  3. 构建成功后运行容器测试:docker run -p 8080:8080 sac-server

内容的提问来源于stack exchange,提问作者Michael Brennan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 17:35:58