# ===================================== # BUILD STAGE (Temurin JDK + Maven) # ===================================== FROM eclipse-temurin:21-jdk-jammy AS builder # ===== 使用国内 apt 镜像(阿里云) ===== RUN sed -i 's@http://.*archive.ubuntu.com@http://mirrors.aliyun.com@g' /etc/apt/sources.list && \ sed -i 's@http://security.ubuntu.com@http://mirrors.aliyun.com@g' /etc/apt/sources.list # 安装构建工具(带自动重试) RUN apt-get update -o Acquire::Retries=5 && \ apt-get install -y --no-install-recommends \ maven wget unzip curl \ -o Acquire::Retries=5 && \ rm -rf /var/lib/apt/lists/* # ===== Maven 使用阿里云镜像 ===== RUN mkdir -p /root/.m2 && \ cat > /root/.m2/settings.xml << 'EOF' aliyun-maven central Aliyun Maven https://maven.aliyun.com/repository/public EOF WORKDIR /build # 复制项目源代码 COPY ./src ./src COPY ./db ./db COPY pom.xml ./ # 构建 jar 包 RUN mvn -Dmaven.repo.local=/root/.m2/repository package -DskipTests # 提取版本号 RUN APP_VERSION=$(grep -A1 "xiaozhi.server" pom.xml | grep "" | sed -e 's///' -e 's/<\/version>//' -e 's/[[:space:]]//g') && \ echo "APP_VERSION=${APP_VERSION}" > /build/app_version.env RUN mkdir -p /build/models COPY ./models/silero_vad.onnx /build/models/ # ===================================== # RUNTIME STAGE (Temurin JRE) # ===================================== FROM eclipse-temurin:21-jre-jammy # ===== 使用国内 apt 源(阿里云) ===== RUN sed -i 's@http://.*archive.ubuntu.com@http://mirrors.aliyun.com@g' /etc/apt/sources.list && \ sed -i 's@http://security.ubuntu.com@http://mirrors.aliyun.com@g' /etc/apt/sources.list # 安装 ffmpeg(带自动重试) RUN apt-get update -o Acquire::Retries=5 && \ apt-get install -y --no-install-recommends \ ffmpeg \ -o Acquire::Retries=5 && \ rm -rf /var/lib/apt/lists/* WORKDIR /app # 复制运行文件 COPY --from=builder /build/target/xiaozhi.server-*.jar /app/ COPY --from=builder /build/app_version.env /app/ COPY --from=builder /build/models /app/models # 启动脚本 RUN echo '#!/bin/bash\n\ if [ -f /app/app_version.env ]; then\n\ . /app/app_version.env\n\ fi\n\ echo "Starting Xiaozhi server version: ${APP_VERSION}"\n\ java -Xms512m -Xmx1024m -jar /app/xiaozhi.server-${APP_VERSION}.jar\n\ ' > /app/start.sh && chmod +x /app/start.sh CMD ["/bin/bash", "/app/start.sh"]