Docker运行Golang项目报错:无法找到内部文件夹对应依赖包
问题根因
你的Dockerfile中只复制了项目根目录下的.go后缀文件,Repositories、Settings等子包目录没有被拷贝到容器的工作目录/app下。Go编译器在工作目录找不到对应包时,会默认去GOROOT路径下查找,最终触发路径不匹配的报错。
修复方案
修改Dockerfile中的文件复制逻辑,将当前项目的所有文件(包含子目录)全部复制到容器工作目录即可:
- 将原Dockerfile中的
COPY *.go ./替换为COPY . ./ - 可选操作:如果有不需要传入容器的文件(如本地编译产物、.git目录等),可在项目根目录新增
.dockerignore文件,写入对应排除规则
修改后完整Dockerfile示例
FROM golang:1.17-alpine WORKDIR /app COPY go.mod ./ COPY go.sum ./ RUN go mod download # 复制全部项目文件,包含子包目录 COPY . ./ RUN go env GOROOT RUN go build -o /my-api EXPOSE 8080 CMD [ "/my-api" ]
修改后重新执行docker build即可正常完成编译。
内容的提问来源于stack exchange,提问作者Roberto Rizzi
相关产品推荐
相关产品推荐

