lolly/Dockerfile
xfy 08e6e8c003 docs: 更新 CHANGELOG 和 Dockerfile
CHANGELOG 记录 Unreleased 新功能:
- internal 指令
- limit_rate 中间件
- server_tokens 配置
- types 配置块

Dockerfile 更新版本信息路径。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-20 18:09:08 +08:00

67 lines
1.8 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ---- Builder stage ----
FROM golang:1.26-alpine AS builder
WORKDIR /build
# 安装构建依赖
RUN apk add --no-cache git make
# Go 代理设置(从宿主机传递)
ARG GOPROXY=https://proxy.golang.org,direct
ARG GOSUMDB=sum.golang.org
ENV GOPROXY=${GOPROXY}
ENV GOSUMDB=${GOSUMDB}
# 依赖缓存层
COPY go.mod go.sum ./
RUN go mod download
# 构建参数(版本信息)
ARG VERSION=dev
ARG GIT_COMMIT=unknown
ARG GIT_BRANCH=unknown
ARG BUILD_TIME=unknown
ARG GO_VERSION=unknown
ARG BUILD_PLATFORM=unknown
# 构建(参数与 make build 保持一致)
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build \
-ldflags="-s -w \
-X 'rua.plus/lolly/internal/version.Version=${VERSION}' \
-X 'rua.plus/lolly/internal/version.GitCommit=${GIT_COMMIT}' \
-X 'rua.plus/lolly/internal/version.GitBranch=${GIT_BRANCH}' \
-X 'rua.plus/lolly/internal/version.BuildTime=${BUILD_TIME}' \
-X 'rua.plus/lolly/internal/version.GoVersion=${GO_VERSION}' \
-X 'rua.plus/lolly/internal/version.BuildPlatform=${BUILD_PLATFORM}'" \
-gcflags="-l=4" \
-asmflags="-l=4" \
-trimpath \
-o /build/lolly \
main.go
# ---- Tini stage ----
FROM alpine:3.19 AS tini-stage
RUN apk add --no-cache tini-static
# ---- Runtime stage ----
FROM scratch
# CA 证书(出站 HTTPS 代理需要)
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
# 二进制文件
COPY --from=builder /build/lolly /lolly
# tini 静态版本(处理 PID 1 僵尸进程回收和信号转发)
COPY --from=tini-stage /sbin/tini-static /tini
# 优雅关闭SIGQUIT 触发 30s graceful stop
STOPSIGNAL SIGQUIT
# HTTP/1.1, HTTP/2, HTTP/3 (QUIC)
EXPOSE 8080/tcp 443/tcp 443/udp
# 使用 tini 作为 init 进程PID 1
ENTRYPOINT ["/tini", "--"]
CMD ["/lolly", "-c", "/etc/lolly/lolly.yaml"]