test
This commit is contained in:
24
Dockerfile
24
Dockerfile
@@ -5,19 +5,17 @@ FROM docker.aipper.de/eclipse-temurin:8-jre-alpine AS base
|
|||||||
# 设置维护者信息
|
# 设置维护者信息
|
||||||
LABEL maintainer="digital-archive-team"
|
LABEL maintainer="digital-archive-team"
|
||||||
|
|
||||||
# 使用阿里云镜像源并安装基础包
|
# 使用阿里云镜像源并安装最小基础包
|
||||||
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
|
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
|
||||||
apk add --no-cache \
|
apk add --no-cache \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
curl \
|
curl \
|
||||||
bash \
|
tini \
|
||||||
ttf-dejavu \
|
|
||||||
fontconfig \
|
|
||||||
&& rm -rf /var/cache/apk/*
|
&& rm -rf /var/cache/apk/*
|
||||||
|
|
||||||
# ===== Maven 构建阶段 =====
|
# ===== Maven 构建阶段 =====
|
||||||
# 使用更小的Alpine 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
|
WORKDIR /build
|
||||||
@@ -111,7 +109,10 @@ RUN echo "=== 验证Maven环境 ===" && \
|
|||||||
RUN echo "=== 开始构建应用 ===" && \
|
RUN echo "=== 开始构建应用 ===" && \
|
||||||
mvn clean package -DskipTests -B -s /root/.m2/settings.xml -e \
|
mvn clean package -DskipTests -B -s /root/.m2/settings.xml -e \
|
||||||
-Dmaven.test.skip=true \
|
-Dmaven.test.skip=true \
|
||||||
-Dmaven.compiler.optimize=true
|
-Dmaven.compiler.optimize=true \
|
||||||
|
&& \
|
||||||
|
echo "=== 清理Maven缓存减少镜像大小 ===" && \
|
||||||
|
rm -rf /root/.m2/repository
|
||||||
|
|
||||||
# 检查构建结果并复制正确的JAR文件
|
# 检查构建结果并复制正确的JAR文件
|
||||||
RUN echo "=== 检查构建结果 ===" && \
|
RUN echo "=== 检查构建结果 ===" && \
|
||||||
@@ -121,14 +122,16 @@ RUN echo "=== 检查构建结果 ===" && \
|
|||||||
echo "=== 复制正确的 JAR 文件 ===" && \
|
echo "=== 复制正确的 JAR 文件 ===" && \
|
||||||
cp /build/target/*.jar /build/app.jar && \
|
cp /build/target/*.jar /build/app.jar && \
|
||||||
ls -la /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
|
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
|
ENV SPRING_PROFILES_ACTIVE=prod
|
||||||
|
|
||||||
# 创建应用用户和目录
|
# 创建应用用户和目录
|
||||||
@@ -165,5 +168,6 @@ HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
|
|||||||
# 暴露端口
|
# 暴露端口
|
||||||
EXPOSE 9081
|
EXPOSE 9081
|
||||||
|
|
||||||
# 启动应用
|
# 使用tini作为init进程,正确处理信号
|
||||||
|
ENTRYPOINT ["/sbin/tini", "--"]
|
||||||
CMD ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]
|
CMD ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]
|
||||||
|
|||||||
@@ -1,11 +1,6 @@
|
|||||||
version: '3.8'
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
# 主应用服务
|
|
||||||
app:
|
app:
|
||||||
build:
|
image: archive
|
||||||
context: .
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
container_name: digital-archive-app
|
container_name: digital-archive-app
|
||||||
ports:
|
ports:
|
||||||
- "9081:9081"
|
- "9081:9081"
|
||||||
@@ -20,29 +15,21 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- SPRING_PROFILES_ACTIVE=prod
|
- SPRING_PROFILES_ACTIVE=prod
|
||||||
- SERVER_PORT=9081
|
- SERVER_PORT=9081
|
||||||
# 数据库配置
|
|
||||||
- DB_HOST=database
|
- DB_HOST=database
|
||||||
- DB_PORT=54321
|
- DB_PORT=54321
|
||||||
- DB_NAME=enterprise_digital_archives
|
- DB_NAME=enterprise_digital_archives
|
||||||
- DB_USERNAME=system
|
- DB_USERNAME=system
|
||||||
- DB_PASSWORD=12345678ab
|
- DB_PASSWORD=12345678ab
|
||||||
# Redis配置
|
|
||||||
- REDIS_HOST=redis
|
- REDIS_HOST=redis
|
||||||
- REDIS_PORT=6379
|
- REDIS_PORT=6379
|
||||||
- REDIS_PASSWORD=Abc123456
|
- REDIS_PASSWORD=Abc123456
|
||||||
# Elasticsearch配置 - 使用已有的 "es" 容器
|
|
||||||
- ELASTICSEARCH_HOST=es
|
- ELASTICSEARCH_HOST=es
|
||||||
- ELASTICSEARCH_PORT=9200
|
- ELASTICSEARCH_PORT=9200
|
||||||
- ELASTICSEARCH_SCHEME=http
|
- ELASTICSEARCH_SCHEME=http
|
||||||
# OCR配置
|
|
||||||
- TESS_PATH=/usr/bin/tesseract
|
- TESS_PATH=/usr/bin/tesseract
|
||||||
# 其他配置
|
|
||||||
- SWAGGER_SHOW=false
|
- SWAGGER_SHOW=false
|
||||||
- LOG_ROOT_LEVEL=info
|
- LOG_ROOT_LEVEL=info
|
||||||
- LOG_APP_LEVEL=info
|
- LOG_APP_LEVEL=info
|
||||||
depends_on:
|
|
||||||
- database
|
|
||||||
- redis
|
|
||||||
networks:
|
networks:
|
||||||
- proxy
|
- proxy
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
@@ -52,66 +39,6 @@ services:
|
|||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
start_period: 60s
|
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:
|
networks:
|
||||||
proxy:
|
proxy:
|
||||||
external: true
|
external: true
|
||||||
|
|
||||||
volumes:
|
|
||||||
upload-data:
|
|
||||||
temp-data:
|
|
||||||
unzip-data:
|
|
||||||
images-data:
|
|
||||||
reports-data:
|
|
||||||
database-data:
|
|
||||||
redis-data:
|
|
||||||
elasticsearch-data:
|
|
||||||
Reference in New Issue
Block a user