2 回答
TA贡献1859条经验 获得超6个赞
你Dockerfile的太嵌套了。由于您go build依赖于相对路径 - 父目录中的路径 - adocker build .不会看到任何父目录文件。
移动Dockerfile到顶部,例如
Dockerile
lib/
并更新以构建嵌套的构建目录:
FROM golang:1.15
WORKDIR /go/src/app
# just need to copy lib tree
COPY lib .
# working from here now
WORKDIR /go/src/app/lib/golang/example/golang
RUN go env -w GO111MODULE=auto
RUN go env -w GOPROXY=https://goproxy.io,direct
RUN go get -d -v ./...
RUN go install -v ./...
CMD ["app"]
TA贡献1862条经验 获得超6个赞
您可以使用go mod vendor之前使用 Docker 进行构建,它会将您的所有 mod 集中在 vendor 文件夹中。
我在里面做了一个名为 build.sh 的新文件:
#! /bin/sh
go mod vendor
docker build . -t myapp/myservice
rm -rf ./vendor
并在我需要构建时运行它并通过删除供应商我仍然可以使用 go run *.go 与我的库的新版本
- 2 回答
- 0 关注
- 240 浏览
添加回答
举报
