2026-06-26 20:43:44 +08:00
|
|
|
FROM golang:1.26-alpine AS builder
|
2026-05-23 20:32:12 +08:00
|
|
|
|
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
|
|
|
|
COPY go.mod go.sum ./
|
|
|
|
|
RUN go mod download
|
|
|
|
|
|
|
|
|
|
COPY . .
|
|
|
|
|
|
2026-08-27 10:18:34 +08:00
|
|
|
# VERSION 由 CI/CD 传入,通常为 `git describe --tags --always --dirty` 的输出
|
|
|
|
|
# COMMIT 为 `git rev-parse --short HEAD`
|
|
|
|
|
# 本地默认 dev
|
|
|
|
|
ARG VERSION=dev
|
|
|
|
|
ARG COMMIT=dev
|
|
|
|
|
RUN CGO_ENABLED=0 GOOS=linux go build \
|
|
|
|
|
-ldflags "-X github.com/volcano-tts/tts-api/version.Version=${VERSION} \
|
|
|
|
|
-X github.com/volcano-tts/tts-api/version.Commit=${COMMIT}" \
|
|
|
|
|
-o tts-api .
|
2026-05-23 20:32:12 +08:00
|
|
|
|
2026-05-24 15:33:27 +08:00
|
|
|
FROM alpine:3.21
|
2026-05-23 20:32:12 +08:00
|
|
|
|
2026-05-24 15:33:27 +08:00
|
|
|
RUN apk --no-cache add ca-certificates tzdata \
|
|
|
|
|
&& addgroup -S appgroup && adduser -S appuser -G appgroup
|
2026-05-23 20:32:12 +08:00
|
|
|
|
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
|
|
|
|
COPY --from=builder /app/tts-api .
|
2026-08-27 11:44:44 +08:00
|
|
|
# health.html 已通过 //go:embed 嵌入 binary,无需单独复制
|
2026-05-23 20:32:12 +08:00
|
|
|
|
2026-05-24 15:33:27 +08:00
|
|
|
RUN chown -R appuser:appgroup /app
|
|
|
|
|
|
|
|
|
|
USER appuser
|
|
|
|
|
|
2026-05-23 20:32:12 +08:00
|
|
|
EXPOSE 8080
|
|
|
|
|
|
|
|
|
|
HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \
|
|
|
|
|
CMD wget -qO- http://localhost:8080/health || exit 1
|
|
|
|
|
|
|
|
|
|
ENTRYPOINT ["./tts-api"]
|