When deploying a simple API with a Docker multi-stage build the following error is being thrown:
$ docker build -t api:latest . [...] $ docker run -p 4880:4880 --rm --name=api api:latest 2019/01/29 23:02:15 exec: "go": executable file not found in $PATH
As my application is not calling
go from anywhere (or any
exec.Command) I ran a
go mod vendor so I could check the dependency source code and found the following:
vendor/github.com/lib/pq/oid/gen.go 12: "os/exec" 64: cmd := exec.Command("gofmt")
Could this be the issue and if so how can I fix it? I am sure I have managed to deploy
github.com/lib/pq in a multi-stage build before but I am currently stuck.
Many thanks and Happy Hacking.
FROM golang:1-alpine AS builder ENV GO111MODULE=on RUN apk --no-cache add ca-certificates git WORKDIR /app # Copy go module info first... COPY go.mod . COPY go.sum . # ...then download to cache dependencies between builds RUN go mod download COPY . . RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -installsuffix cgo -ldflags '-extldflags "-static"' -o api cmd/api/ FROM scratch WORKDIR /app COPY --from=builder /app/api /app/ COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ EXPOSE 8080 ENTRYPOINT ["./api"]