diff --git a/headscale/Dockerfile b/headscale/Dockerfile new file mode 100644 index 0000000..fc7de01 --- /dev/null +++ b/headscale/Dockerfile @@ -0,0 +1,33 @@ +# Builder image +FROM docker.io/golang:1.19.0-bullseye AS build +ARG VERSION=v0.17.0-beta4 +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.0-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"] diff --git a/headscale/app.sh b/headscale/app.sh new file mode 100644 index 0000000..0b38f73 --- /dev/null +++ b/headscale/app.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +touch /var/lib/headscale/db.sqlite +mkdir /var/lib/headscale/.cache +exec headscale -c /etc/headscale/config.yaml serve