This commit is contained in:
2025-11-01 14:23:30 +08:00
parent 5beb48e11c
commit a1e2bea798
11 changed files with 844 additions and 47 deletions

127
docker-compose.yml Normal file
View File

@@ -0,0 +1,127 @@
version: '3.8'
services:
# 主应用服务
app:
build:
context: .
dockerfile: Dockerfile
container_name: digital-archive-app
ports:
- "9081:9081"
volumes:
# 持久化数据目录
- ./data/upload:/app/data/upload
- ./data/temp:/app/data/temp
- ./data/unzip:/app/data/unzip
- ./data/images:/app/data/images
- ./data/reports:/app/data/reports
- ./logs:/app/logs
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
# OCR配置
- TESS_PATH=/usr/bin/tesseract
# 其他配置
- SWAGGER_SHOW=false
- LOG_ROOT_LEVEL=info
- LOG_APP_LEVEL=info
depends_on:
- database
- redis
networks:
- archive-network
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9081/point-strategy/actuator/health"]
interval: 30s
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:
- archive-network
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:
- archive-network
restart: unless-stopped
# Elasticsearch可选用于全文检索
elasticsearch:
image: elasticsearch:7.17.0
container_name: digital-archive-elasticsearch
ports:
- "9200:9200"
- "9300:9300"
environment:
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- xpack.security.enabled=false
volumes:
- ./data/elasticsearch:/usr/share/elasticsearch/data
networks:
- archive-network
restart: unless-stopped
# 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:
- archive-network
restart: unless-stopped
networks:
archive-network:
driver: bridge
volumes:
upload-data:
temp-data:
unzip-data:
images-data:
reports-data:
database-data:
redis-data:
elasticsearch-data: