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"
|
||||
|
||||
# 使用阿里云镜像源并安装基础包
|
||||
# 使用阿里云镜像源并安装最小基础包
|
||||
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"]
|
||||
|
||||
@@ -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:
|
||||
Reference in New Issue
Block a user