From dda1a4935a140d13779b277c8b811d07d2107a54 Mon Sep 17 00:00:00 2001 From: aipper Date: Tue, 11 Nov 2025 18:18:35 +0800 Subject: [PATCH] test --- Dockerfile | 24 ++++++++------- docker-compose.yml | 75 +--------------------------------------------- 2 files changed, 15 insertions(+), 84 deletions(-) diff --git a/Dockerfile b/Dockerfile index 494be63..55a375b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,19 +5,17 @@ FROM docker.aipper.de/eclipse-temurin:8-jre-alpine AS base # 设置维护者信息 LABEL maintainer="digital-archive-team" -# 使用阿里云镜像源并安装基础包 +# 使用阿里云镜像源并安装最小基础包 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \ apk add --no-cache \ ca-certificates \ curl \ - bash \ - ttf-dejavu \ - fontconfig \ + tini \ && rm -rf /var/cache/apk/* # ===== Maven 构建阶段 ===== # 使用更小的Alpine Maven镜像进行构建 -FROM docker.aipper.de/maven:3.9.9-eclipse-temurin-8-focal AS builder +FROM docker.aipper.de/maven:3.9.9-eclipse-temurin-8-alpine AS builder # 设置工作目录 WORKDIR /build @@ -111,7 +109,10 @@ RUN echo "=== 验证Maven环境 ===" && \ RUN echo "=== 开始构建应用 ===" && \ mvn clean package -DskipTests -B -s /root/.m2/settings.xml -e \ -Dmaven.test.skip=true \ - -Dmaven.compiler.optimize=true + -Dmaven.compiler.optimize=true \ + && \ + echo "=== 清理Maven缓存减少镜像大小 ===" && \ + rm -rf /root/.m2/repository # 检查构建结果并复制正确的JAR文件 RUN echo "=== 检查构建结果 ===" && \ @@ -121,14 +122,16 @@ RUN echo "=== 检查构建结果 ===" && \ echo "=== 复制正确的 JAR 文件 ===" && \ cp /build/target/*.jar /build/app.jar && \ ls -la /build/app.jar && \ - echo "JAR 文件大小: $(du -h /build/app.jar | cut -f1)" + echo "JAR 文件大小: $(du -h /build/app.jar | cut -f1)" && \ + echo "=== 清理构建临时文件 ===" && \ + rm -rf /build/src /build/pom.xml /build/target /tmp/local-jars # ===== 运行阶段 ===== # 复用基础镜像,避免重复安装依赖 FROM base -# 设置环境变量 -ENV JAVA_OPTS="-Xmx1g -Xms512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Djava.awt.headless=true -XX:+UseContainerSupport -XX:MaxRAMPercentage=75.0" +# 设置环境变量(优化内存使用) +ENV JAVA_OPTS="-Xmx512m -Xms256m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Djava.awt.headless=true -XX:+UseContainerSupport -XX:MaxRAMPercentage=75.0" ENV SPRING_PROFILES_ACTIVE=prod # 创建应用用户和目录 @@ -165,5 +168,6 @@ HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ # 暴露端口 EXPOSE 9081 -# 启动应用 +# 使用tini作为init进程,正确处理信号 +ENTRYPOINT ["/sbin/tini", "--"] CMD ["sh", "-c", "java $JAVA_OPTS -jar app.jar"] diff --git a/docker-compose.yml b/docker-compose.yml index 13326da..7ed16fc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,11 +1,6 @@ -version: '3.8' - services: - # 主应用服务 app: - build: - context: . - dockerfile: Dockerfile + image: archive container_name: digital-archive-app ports: - "9081:9081" @@ -20,29 +15,21 @@ services: environment: - SPRING_PROFILES_ACTIVE=prod - SERVER_PORT=9081 - # 数据库配置 - DB_HOST=database - DB_PORT=54321 - DB_NAME=enterprise_digital_archives - DB_USERNAME=system - DB_PASSWORD=12345678ab - # Redis配置 - REDIS_HOST=redis - REDIS_PORT=6379 - REDIS_PASSWORD=Abc123456 - # Elasticsearch配置 - 使用已有的 "es" 容器 - ELASTICSEARCH_HOST=es - ELASTICSEARCH_PORT=9200 - ELASTICSEARCH_SCHEME=http - # OCR配置 - TESS_PATH=/usr/bin/tesseract - # 其他配置 - SWAGGER_SHOW=false - LOG_ROOT_LEVEL=info - LOG_APP_LEVEL=info - depends_on: - - database - - redis networks: - proxy restart: unless-stopped @@ -52,66 +39,6 @@ services: timeout: 10s retries: 3 start_period: 60s - - # 人大金仓数据库(示例) - database: - image: kingbase:v8.6.0 - container_name: digital-archive-db - ports: - - "54321:54321" - environment: - - KINGBASE_USER=system - - KINGBASE_PASSWORD=12345678ab - - KINGBASE_DATABASE=enterprise_digital_archives - volumes: - - ./data/database:/var/lib/kingbase/data - - ./init-scripts:/docker-entrypoint-initdb.d - networks: - - proxy - restart: unless-stopped - - # Redis缓存 - redis: - image: redis:6-alpine - container_name: digital-archive-redis - ports: - - "6379:6379" - command: redis-server --requirepass Abc123456 - volumes: - - ./data/redis:/data - networks: - - proxy - restart: unless-stopped - - # Elasticsearch - 使用已有的 "es" 容器 - # 注意:确保已有的 "es" 容器已连接到 proxy 网络 - - # Nginx反向代理(可选) - nginx: - image: nginx:alpine - container_name: digital-archive-nginx - ports: - - "80:80" - - "443:443" - volumes: - - ./nginx/nginx.conf:/etc/nginx/nginx.conf - - ./nginx/ssl:/etc/nginx/ssl - depends_on: - - app - networks: - - proxy - restart: unless-stopped - networks: proxy: external: true - -volumes: - upload-data: - temp-data: - unzip-data: - images-data: - reports-data: - database-data: - redis-data: - elasticsearch-data: \ No newline at end of file