# Builder image FROM docker.io/golang:1.19.3-bullseye AS build ARG VERSION=v0.20.0 ENV GOPATH /go RUN apt-get install -y git && \ git clone https://github.com/juanfont/headscale -b $VERSION /go/src/headscale WORKDIR /go/src/headscale RUN go mod download RUN CGO_ENABLED=0 GOOS=linux go install -tags ts2019 -ldflags="-s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=$VERSION" -a ./cmd/headscale RUN strip /go/bin/headscale RUN test -e /go/bin/headscale # Production image # Note that we do not use "distroless" because we actually want to have a shell in the image # to run app.sh (in order to perform custom initialization) FROM docker.io/golang:1.19.3-bullseye COPY --from=build /go/bin/headscale /bin/headscale ENV TZ UTC ADD app.sh / RUN chmod +x /app.sh EXPOSE 8080/tcp # State path # Note that configuration should be mounted or added in /etc/headscale VOLUME /var/lib/headscale CMD ["/app.sh"]