Go Dockerfile
Updated at 2018-12-31 03:13
How to build a minimal Docker image based on a Go application source code.
FROM golang:1.9.2
WORKDIR /go/src/github.com/username/project
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build .
FROM scratch
COPY --from=0 /go/src/github.com/username/project/executable .
ENTRYPOINT ["/executable"]
- We use temporary container to build the executable using
golang:1.9.2
. We create a new directory where Go would the source to be, copy project directory there and build the executable. We disable CGO that would enable the creation of Go packages that call C code, but that won't work when cross-compiling. - Then we create the actual image, copying just the executable to the empty image.
- Finally we set that running the Docker image will just run the Go executable by default.