From 04992fc57d739d370dd653e14da9cafd69c463e8 Mon Sep 17 00:00:00 2001 From: Peter Cai Date: Tue, 22 Nov 2022 10:03:44 -0500 Subject: [PATCH] Add custom headscale dockerfile --- headscale/Dockerfile | 33 +++++++++++++++++++++++++++++++++ headscale/app.sh | 5 +++++ 2 files changed, 38 insertions(+) create mode 100644 headscale/Dockerfile create mode 100644 headscale/app.sh 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