2026-03-18 00:01:48 +08:00
|
|
|
|
FROM golang:1.23.4-alpine AS builder
|
|
|
|
|
|
|
|
|
|
|
|
LABEL stage=gobuilder
|
|
|
|
|
|
|
|
|
|
|
|
ENV CGO_ENABLED=0
|
|
|
|
|
|
ENV GOPROXY=https://goproxy.cn,direct
|
|
|
|
|
|
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
|
|
|
|
|
|
|
|
|
|
|
|
RUN apk update --no-cache && apk add --no-cache tzdata
|
|
|
|
|
|
|
|
|
|
|
|
WORKDIR /build
|
|
|
|
|
|
|
|
|
|
|
|
ADD go.mod .
|
|
|
|
|
|
ADD go.sum .
|
|
|
|
|
|
RUN go mod download
|
|
|
|
|
|
COPY . .
|
|
|
|
|
|
COPY app/main/api/etc /app/etc
|
|
|
|
|
|
COPY app/main/api/static /app/static
|
|
|
|
|
|
RUN go build -ldflags="-s -w" -o /app/main app/main/api/main.go
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FROM alpine:3.19
|
|
|
|
|
|
|
|
|
|
|
|
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
|
|
|
|
|
|
&& apk update --no-cache \
|
|
|
|
|
|
# 基础运行环境
|
2026-03-18 01:26:26 +08:00
|
|
|
|
&& apk add --no-cache ca-certificates tzdata fontconfig \
|
2026-03-18 00:01:48 +08:00
|
|
|
|
# chromedp 所需的 Chromium 浏览器及依赖
|
|
|
|
|
|
&& apk add --no-cache \
|
|
|
|
|
|
chromium \
|
|
|
|
|
|
nss \
|
|
|
|
|
|
freetype \
|
|
|
|
|
|
ttf-freefont \
|
|
|
|
|
|
harfbuzz \
|
|
|
|
|
|
font-noto-emoji \
|
|
|
|
|
|
dumb-init \
|
|
|
|
|
|
&& rm -rf /var/cache/apk/*
|
|
|
|
|
|
|
|
|
|
|
|
# 为 chromedp 指定默认的 Chrome 路径(Alpine 下 chromium 包的可执行文件)
|
|
|
|
|
|
ENV CHROME_BIN=/usr/bin/chromium-browser
|
|
|
|
|
|
ENV TZ=Asia/Shanghai
|
|
|
|
|
|
|
|
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
|
|
|
|
|
|
COPY --from=builder /app/main /app/main
|
|
|
|
|
|
COPY --from=builder /app/etc /app/etc
|
|
|
|
|
|
COPY --from=builder /app/static /app/static
|
|
|
|
|
|
|
2026-03-18 01:26:26 +08:00
|
|
|
|
# 将自定义字体资源拷贝到系统字体目录,供 Chromium 渲染中文使用(如果存在)
|
|
|
|
|
|
COPY resource /usr/share/fonts/custom
|
|
|
|
|
|
RUN fc-cache -f || true
|
|
|
|
|
|
|
2026-03-18 00:01:48 +08:00
|
|
|
|
# 报告 PDF 缓存目录(与配置中的 ./data/report-pdf 对应)
|
|
|
|
|
|
RUN mkdir -p /app/data/report-pdf
|
|
|
|
|
|
VOLUME ["/app/data/report-pdf"]
|
|
|
|
|
|
|
|
|
|
|
|
ENTRYPOINT ["dumb-init", "--"]
|
|
|
|
|
|
CMD ["./main", "-f", "etc/main.yaml"]
|