43 lines
858 B
Docker
43 lines
858 B
Docker
# ===== 多阶段构建 =====
|
||
# 阶段1:构建
|
||
FROM golang:1.22-alpine AS builder
|
||
|
||
WORKDIR /build
|
||
|
||
# 复制go.mod和go.sum
|
||
COPY go.mod go.sum ./
|
||
RUN go mod download
|
||
|
||
# 复制源代码
|
||
COPY . .
|
||
|
||
# 编译(静态链接,不依赖glibc)
|
||
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o tcm-agent main.go
|
||
|
||
# 阶段2:运行
|
||
FROM alpine:3.19
|
||
|
||
# 安装CA证书(HTTPS请求需要)
|
||
RUN apk --no-cache add ca-certificates tzdata
|
||
|
||
# 设置时区
|
||
ENV TZ=Asia/Shanghai
|
||
|
||
WORKDIR /app
|
||
|
||
# 从构建阶段复制二进制
|
||
COPY --from=builder /build/tcm-agent .
|
||
|
||
# 复制配置文件
|
||
COPY manifest/config/config.yaml ./manifest/config/config.yaml
|
||
|
||
# 暴露端口
|
||
EXPOSE 8080
|
||
|
||
# 健康检查
|
||
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
|
||
CMD wget -qO- http://localhost:8080/health || exit 1
|
||
|
||
# 启动
|
||
CMD ["./tcm-agent"]
|