I have a project that I upgraded FROM golang:1.9-alpine
to FROM golang:1.12-alpine
and now my test aren't running. It's now saying:
$ docker-compose exec bot go vet
# runtime/cgo
exec: "gcc": executable file not found in $PATH
According to the docs for https://golang.org/doc/install/gccgo this is the compiler. How come I can run my app without this but it won't run tests without it? I've been looking through the change logs and must be missing where this is covered.
Here's my 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"]
It looks like you're encountering this issue: https://github.com/golang/go/issues/26988
The workaround suggested is to set these environment variables when building:
CGO_ENABLED=0 GO111MODULE=off
You might also prefer a multi-stage docker build, so that your final docker image is minimal (for example, not including the source files you've compiled from, and the go compiler). An example from the docker documentation is here: https://docs.docker.com/develop/develop-images/multistage-build/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With