crm-mcp/crm-mcp/Dockerfile

58 lines
1.4 KiB
Docker

# 多阶段构建 - 构建阶段
FROM maven:3.8.6-openjdk-17-slim AS builder
# 设置工作目录
WORKDIR /app
# 复制 pom.xml 和源代码
COPY pom.xml .
COPY ../pom.xml ../pom.xml
COPY src ./src
# 构建应用
RUN mvn clean package -DskipTests
# 运行阶段
FROM openjdk:17-jre-alpine
# 设置时区和安装必要工具
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo 'Asia/Shanghai' >/etc/timezone && \
apk add --no-cache curl && \
addgroup -g 1000 appgroup && \
adduser -D -s /bin/sh -u 1000 -G appgroup appuser
# 创建应用目录
RUN mkdir -p /app/logs && \
chown -R appuser:appgroup /app
# 复制构建好的 jar 包
COPY --from=builder /app/target/crm-mcp-*.jar /app/crm-mcp.jar
COPY --chown=appuser:appgroup --from=builder /app/target/crm-mcp-*.jar /app/crm-mcp.jar
# 切换到非 root 用户
USER appuser
# 设置工作目录
WORKDIR /app
# 暴露端口
EXPOSE 8080
# 健康检查
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
CMD curl -f http://localhost:8080/actuator/health || exit 1
# 设置 JVM 参数和启动命令
CMD ["java", \
"-Xms512m", \
"-Xmx1024m", \
"-XX:+UseG1GC", \
"-XX:+UseContainerSupport", \
"-XX:MaxRAMPercentage=75.0", \
"-Dspring.profiles.active=prod", \
"-Dspring.ai.mcp.server.stdio=false", \
"-Djava.security.egd=file:/dev/./urandom", \
"-jar", \
"crm-mcp.jar"]