为什么参加考试突然需要“ gcc”?

时间:2019-03-31 14:52:38

标签: go

我有一个将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"]

1 个答案:

答案 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/