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: