55 lines
1.4 KiB
Docker
55 lines
1.4 KiB
Docker
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 \
|
||
# 基础运行环境
|
||
&& apk add --no-cache ca-certificates tzdata \
|
||
# 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
|
||
|
||
# 报告 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"]
|