37 lines
1.3 KiB
Docker
37 lines
1.3 KiB
Docker
# ========= Stage 1: (可选)你的前端静态资源构建 =========
|
||
FROM node:lts-alpine AS ui-builder
|
||
WORKDIR /src
|
||
COPY headscale-ui/package*.json ./
|
||
RUN npm ci
|
||
COPY headscale-ui/ .
|
||
RUN npm run build
|
||
|
||
# ========= Stage 2: 用 Go 1.25 (Alpine) 构建 Caddy + 插件 =========
|
||
FROM golang:1.25.0-alpine3.22 AS caddy-builder
|
||
|
||
RUN echo "https://mirrors.aliyun.com/alpine/v3.22/main" > /etc/apk/repositories && \
|
||
echo "https://mirrors.aliyun.com/alpine/v3.22/community" >> /etc/apk/repositories && \
|
||
apk update && \
|
||
apk add --no-cache git build-base ca-certificates
|
||
|
||
ENV GOPROXY=https://goproxy.cn,direct
|
||
ENV GOTOOLCHAIN=local
|
||
|
||
RUN go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
|
||
|
||
# 用 xcaddy 构建 (保持与用户提供版本一致/可调整)
|
||
RUN /go/bin/xcaddy build v2.10.1 \
|
||
--output /usr/local/bin/caddy \
|
||
--with github.com/caddy-dns/alidns@v1.0.26 \
|
||
--with github.com/caddy-dns/cloudflare@v0.2.1 \
|
||
--with github.com/mholt/caddy-l4
|
||
|
||
# ========= Stage 3: 运行时镜像(Alpine) =========
|
||
FROM caddy:2.10.0-alpine
|
||
COPY --from=caddy-builder /usr/local/bin/caddy /usr/bin/caddy
|
||
COPY --from=ui-builder /src/build /usr/src/www
|
||
|
||
RUN apk update && \
|
||
apk add --no-cache bind-tools netcat-openbsd jq curl && \
|
||
mkdir -p /data/log/headscale
|