如何禁用 CGO 以运行测试

5 go docker

我使用 Docker 将我的项目添加到其中,现在我想对其运行一些测试,但我收到测试失败的错误

知道我在这里想念什么吗?

# build stage
FROM golang:1.11.1-alpine3.8 AS builder

RUN apk add --update --no-cache make \
    git

ADD https://github.com/golang/dep/releases/download/v0.5.0/dep-linux-amd64 /usr/bin/dep
RUN chmod +x /usr/bin/dep

RUN mkdir -p $GOPATH/src/github.company/user/go-application
WORKDIR  $GOPATH/src/github.company/user/go-application
COPY Gopkg.toml Gopkg.lock ./
RUN dep ensure --vendor-only
COPY . ./
Run Code Online (Sandbox Code Playgroud)

现在我构建了成功完成的 docker,现在我想对其进行测试。

我做了 docker docker run -it goapprun 成功运行

现在我使用命令go test -v ./...,但出现错误

# runtime/cgo
exec: "gcc": executable file not found in $PATH
FAIL    github.company/user/go-application [build failed]
FAIL    github.company/user/go-application/integration [build failed]
Run Code Online (Sandbox Code Playgroud)

知道如何解决这个问题吗?

我在 docker 文件中尝试另一个步骤,如下所示,这没有帮助

RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix nocgo -o /go-application .
Run Code Online (Sandbox Code Playgroud)

Fli*_*mzy 11

您已经为您的构建禁用了 CGO,但您没有为您的测试禁用 CGO,您必须这样做:

CGO_ENABLED=0 GOOS=linux go test -v ./...
Run Code Online (Sandbox Code Playgroud)