/ Dockerfile
Dockerfile
1 # 多阶段构建Dockerfile 2 # 第一阶段:构建Go应用 3 FROM golang:1.23.2-alpine AS builder 4 5 # 设置工作目录 6 WORKDIR /app 7 8 # 安装必要的构建工具 9 RUN apk add --no-cache git ca-certificates tzdata 10 11 # 复制源代码(包含go.mod和go.sum) 12 COPY . . 13 14 # 下载依赖 15 RUN go mod download 16 17 # 构建应用 18 RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -trimpath -buildvcs=false -o ai-infra-guard ./cmd/cli/main.go 19 20 # 第二阶段:运行阶段(使用Python 3.12 Alpine镜像) 21 FROM python:3.12-alpine 22 23 # 安装运行时依赖 24 RUN apk add --no-cache \ 25 ca-certificates \ 26 tzdata \ 27 bash \ 28 curl \ 29 git 30 31 # 安装uv到/usr/local/bin 32 RUN curl -LsSf https://astral.sh/uv/install.sh | env UV_INSTALL_DIR="/usr/local/bin" sh 33 34 # 设置工作目录 35 WORKDIR /app 36 37 # 从构建阶段复制二进制文件和配置文件 38 COPY --from=builder /app/ai-infra-guard . 39 COPY --from=builder /app/trpc_go.yaml . 40 COPY --from=builder /app/CHANGELOG.md . 41 42 # 复制数据文件到容器中 43 COPY --from=builder /app/data ./data 44 45 # 复制agent-scan目录并安装Python依赖 46 COPY ./agent-scan /app/agent-scan 47 RUN pip install --no-cache-dir -r /app/agent-scan/requirements.txt 48 49 # 复制启动脚本到镜像中 50 COPY start.sh /app/start.sh 51 RUN chmod +x /app/start.sh && chown root:root /app/start.sh 52 53 # 创建必要的目录并设置权限(仅对镜像内有效) 54 RUN mkdir -p /app/uploads \ 55 /app/db && \ 56 chown -R root:root /app && \ 57 chmod -R 755 /app && \ 58 mkdir -p /app/AIG-PromptSecurity/utils 59 COPY ./AIG-PromptSecurity/utils/strategy_map.json /app/AIG-PromptSecurity/utils/strategy_map.json 60 61 # 设置环境变量 62 ENV APP_ENV=production 63 ENV UPLOAD_DIR=/app/uploads 64 ENV DB_PATH=/app/db/tasks.db 65 ENV TZ=Asia/Shanghai 66 ENV PYTHONUNBUFFERED=1 67 68 # 暴露端口 69 EXPOSE 8088 70 71 # 声明卷挂载点 72 VOLUME ["/app/uploads", "/app/db", "/app/data", "/app/logs"] 73 74 # 健康检查 75 HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ 76 CMD pgrep ai-infra-guard || exit 1 77 78 # 启动命令 79 CMD ["/app/start.sh"]