我有一个将FROM golang:1.9-alpine
升级到FROM golang:1.12-alpine
的项目,现在我的测试未运行。现在说:
$ docker-compose exec bot go vet
# runtime/cgo
exec: "gcc": executable file not found in $PATH
根据https://golang.org/doc/install/gccgo的文档,这是编译器。 为什么没有此功能我可以运行我的应用程序,但没有它,它将无法运行测试?我一直在浏览更改日志,并且必须涵盖此内容。
这是我的Dockerfile:
FROM golang:1.12-alpine
RUN mkdir /app
WORKDIR /app
ADD src/ /app
# Fetch application dependencies
RUN apk add --no-cache --update git \
&& go get github.com/bwmarrin/discordgo \
&& go get github.com/jonas747/dshardmanager \
&& go get github.com/bugsnag/bugsnag-go \
&& apk del git
# Build binary
RUN go build -o main .
CMD ["/app/main"]
答案 0 :(得分:4)
您似乎遇到了此问题:https://github.com/golang/go/issues/26988
建议的解决方法是在构建时设置以下环境变量:
CGO_ENABLED=0 GO111MODULE=off
您可能还希望使用多阶段docker构建,以便最终的docker映像最小(例如,不包括从其编译的源文件和go编译器)。码头工人文档中的一个示例在这里:https://docs.docker.com/develop/develop-images/multistage-build/