FROM golang:1.22-alpine AS builder WORKDIR /app # 复制go.mod和go.sum文件 COPY go.mod go.sum ./ # 下载依赖 RUN go mod download # 复制源代码 COPY . . # 构建应用 RUN CGO_ENABLED=0 GOOS=linux go build -o /app/ai-code-review # 使用轻量级的基础镜像 FROM alpine:latest WORKDIR /app # 从构建阶段复制二进制文件 COPY --from=builder /app/ai-code-review /app/ # 复制静态文件目录 COPY --from=builder /app/static /app/static # 创建默认配置文件到临时位置 RUN echo 'port: 53321\nadmin_token: "token"\n\nauto_disable:\n enabled: true\n max_failures: 3\n reset_after: 30\n\nais: []\n\ngit: []' > /app/config.default.yaml # 创建日志目录并设置权限 RUN mkdir -p /app/logs && chmod 755 /app/logs # 暴露端口 EXPOSE 53321 # 设置卷挂载点 VOLUME ["/app/config.yaml", "/app/logs"] # 运行应用,如果配置文件不存在则使用默认配置 CMD ["sh", "-c", "if [ ! -f /app/config.yaml ]; then cp /app/config.default.yaml /app/config.yaml; fi && /app/ai-code-review"]