Improve Dockerfile

This commit makes several changes to the dockerfile:

- Add go.mod and go.sum in a seperate stage, subsequently calling `go
  mod download` to make it cache dependencies and speed up builds
- Use ubuntu:latest (28MB larger) instead of scratch, makes the image a
  lot easier to debug (e.g. it has a shell and a package manager)
- Change ENTRYPOINT to CMD, this makes the behaviour of the image
  slightly different from a CLI perspective, but makes interacting with
  the image from code, docker-compose and kubernetes easier.
This commit is contained in:
Kristoffer Dalby 2021-08-08 17:39:39 +01:00
parent d86123195c
commit a43bb1bb40

View file

@ -1,12 +1,19 @@
FROM golang:latest AS build FROM golang:latest AS build
ENV GOPATH /go ENV GOPATH /go
COPY . /go/src/headscale
COPY go.mod go.sum /go/src/headscale/
WORKDIR /go/src/headscale WORKDIR /go/src/headscale
RUN go mod download
COPY . /go/src/headscale
RUN go install -a -ldflags="-extldflags=-static" -tags netgo,sqlite_omit_load_extension ./cmd/headscale RUN go install -a -ldflags="-extldflags=-static" -tags netgo,sqlite_omit_load_extension ./cmd/headscale
RUN test -e /go/bin/headscale RUN test -e /go/bin/headscale
FROM scratch FROM ubuntu:latest
COPY --from=build /go/bin/headscale /go/bin/headscale
COPY --from=build /go/bin/headscale /usr/local/bin/headscale
ENV TZ UTC ENV TZ UTC
EXPOSE 8080/tcp EXPOSE 8080/tcp
ENTRYPOINT ["/go/bin/headscale"] CMD ["headscale"]