mirror of
https://github.com/juanfont/headscale.git
synced 2026-07-08 00:50:20 +09:00
f585f8a94d
Track nixpkgs staging-next-26.05 for prebuilt Go 1.26.4 (security GO-2026-5037/5039; unstable still ships 1.26.3, lagging the staging pipeline). Bump go.mod, refresh deps (tailscale.com v1.100.0, modernc sqlite v1.52.0 with libc lockstep), test Dockerfiles, vendor hash.
45 lines
1.5 KiB
Docker
45 lines
1.5 KiB
Docker
# This Dockerfile and the images produced are for testing headscale,
|
|
# and are in no way endorsed by Headscale's maintainers as an
|
|
# official nor supported release or distribution.
|
|
|
|
FROM docker.io/golang:1.26.4-trixie AS builder
|
|
ARG VERSION=dev
|
|
ENV GOPATH /go
|
|
WORKDIR /go/src/headscale
|
|
|
|
# Install delve debugger first - rarely changes, good cache candidate
|
|
RUN go install github.com/go-delve/delve/cmd/dlv@latest
|
|
|
|
# Download dependencies - only invalidated when go.mod/go.sum change
|
|
COPY go.mod go.sum /go/src/headscale/
|
|
RUN go mod download
|
|
|
|
# Copy source and build - invalidated on any source change
|
|
COPY . .
|
|
|
|
# Build debug binary with debug symbols for delve
|
|
RUN CGO_ENABLED=0 GOOS=linux go build -gcflags="all=-N -l" -o /go/bin/headscale ./cmd/headscale
|
|
|
|
# Runtime stage
|
|
FROM debian:trixie-slim
|
|
|
|
RUN apt-get --update install --no-install-recommends --yes \
|
|
bash ca-certificates curl dnsutils findutils iproute2 jq less procps python3 sqlite3 \
|
|
&& apt-get dist-clean
|
|
|
|
RUN mkdir -p /var/run/headscale
|
|
|
|
# Copy binaries from builder
|
|
COPY --from=builder /go/bin/headscale /usr/local/bin/headscale
|
|
COPY --from=builder /go/bin/dlv /usr/local/bin/dlv
|
|
|
|
# Copy source code for delve source-level debugging
|
|
COPY --from=builder /go/src/headscale /go/src/headscale
|
|
|
|
WORKDIR /go/src/headscale
|
|
|
|
# Need to reset the entrypoint or everything will run as a busybox script
|
|
ENTRYPOINT []
|
|
EXPOSE 8080/tcp 40000/tcp
|
|
CMD ["dlv", "--listen=0.0.0.0:40000", "--headless=true", "--api-version=2", "--accept-multiclient", "exec", "/usr/local/bin/headscale", "--"]
|