这是我拥有的Dockerfile:
FROM golang:1.13 AS go-build-env
FROM utilities:debug
# Build go binary
RUN apk add gcc go
ENV GO111MODULE=on \
CGO_ENABLED=1 \
GOOS=linux \
GOARCH=amd64
COPY myApp/* myApp/
RUN cd myApp && go build && mv ./myApp ../
CMD bash当它执行go build时,我得到了以下错误
> [stage-1 5/8] RUN cd myApp && go build && mv ./myApp ../:
#12 0.751 found packages main (main.go) and codec (zwrapper.go) in /myApp
#12 0.751 main.go:17:2: package codec is not in GOROOT (/usr/lib/go/src/codec)我的GoApp结构是:
myApp
├── codec
│ └── zwrapper.go
├── go.mod
├── go.sum
├── main.go
└── vendor
├── codec
│ └── zwrapper.go
├── github.com
...当我从go build目录手动运行myApp时,它可以工作,但是在构建Dockerfile时,它一直在抱怨。我必须在Dockerfile中设置一个GOPATH和GOROOT吗?有什么办法可以绕过这件事吗?
发布于 2022-02-22 02:11:38
Go有一个用于构建位置的系统变量集位置(这是严格的)。这要么是您的主目录+go/src/或GOPATH。
在你的情况下,你必须设置你的GOPATH:
ENV GOPATH /myApphttps://stackoverflow.com/questions/71214544
复制相似问题