# 阶段1：构建 Go 二进制文件（优化构建缓存）
FROM golang:1.22-alpine AS builder

WORKDIR /app

# 复制已编译的二进制文件
COPY ./_output/platforms/linux/amd64/data-platform .

# 确保二进制文件具有可执行权限
RUN chmod +x data-platform

# 阶段2：构建生产镜像（使用更安全的非 root 用户）
FROM alpine:3.18

# 创建配置文件和数据目录
RUN mkdir -p /app/config
RUN mkdir -p /app/data

# 将二进制文件从 builder 阶段复制到生产镜像中
COPY --from=builder /app/data-platform /usr/local/bin/data-platform

# 声明 Cloud Run 的 PORT 环境变量（优先使用外部注入）
ENV PORT=8868
EXPOSE $PORT

VOLUME [ "/app/config"]

# 使用 exec 形式启动（确保信号传递）
CMD ["data-platform", "-c", "/app/config/config.yaml"]