前端项目结构

This commit is contained in:
2025-12-02 15:55:30 +08:00
parent 2a9e624ba9
commit 28787e5b29
18 changed files with 2545 additions and 2167 deletions

263
docker-compose.dev.yml Normal file
View File

@@ -0,0 +1,263 @@
version: '3.8'
# 开发环境完整部署配置
services:
# ================== 基础服务 ==================
# PostgreSQL 数据库
postgres:
image: postgres:16-alpine
container_name: ul-postgres
environment:
POSTGRES_DB: urban_lifeline
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres123
TZ: Asia/Shanghai
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
- ./urbanLifelineServ/.bin/database/postgres/sql:/docker-entrypoint-initdb.d
networks:
- ul-network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
# Redis
redis:
image: redis:7-alpine
container_name: ul-redis
ports:
- "6379:6379"
volumes:
- redis_data:/data
networks:
- ul-network
command: redis-server --appendonly yes
# Nacos 注册中心
nacos:
image: nacos/nacos-server:v2.3.0
container_name: ul-nacos
environment:
MODE: standalone
SPRING_DATASOURCE_PLATFORM: mysql
PREFER_HOST_MODE: hostname
JVM_XMS: 512m
JVM_XMX: 512m
JVM_XMN: 256m
ports:
- "8848:8848"
- "9848:9848"
volumes:
- nacos_data:/home/nacos/data
networks:
- ul-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8848/nacos"]
interval: 10s
timeout: 5s
retries: 10
# ================== 后端服务 ==================
# Gateway 网关服务
gateway:
build:
context: ./urbanLifelineServ/gateway
dockerfile: Dockerfile.dev
container_name: ul-gateway
environment:
SPRING_PROFILES_ACTIVE: dev
NACOS_SERVER_ADDR: nacos:8848
POSTGRES_HOST: postgres
POSTGRES_PORT: 5432
REDIS_HOST: redis
REDIS_PORT: 6379
ports:
- "8080:8080"
volumes:
- ./urbanLifelineServ/gateway:/app
- maven_cache:/root/.m2
networks:
- ul-network
depends_on:
postgres:
condition: service_healthy
nacos:
condition: service_healthy
command: mvn spring-boot:run
# 认证服务
auth-service:
build:
context: ./urbanLifelineServ/auth
dockerfile: Dockerfile.dev
container_name: ul-auth
environment:
SPRING_PROFILES_ACTIVE: dev
NACOS_SERVER_ADDR: nacos:8848
POSTGRES_HOST: postgres
REDIS_HOST: redis
volumes:
- ./urbanLifelineServ/auth:/app
- maven_cache:/root/.m2
networks:
- ul-network
depends_on:
- postgres
- nacos
# 系统服务
system-service:
build:
context: ./urbanLifelineServ/system
dockerfile: Dockerfile.dev
container_name: ul-system
environment:
SPRING_PROFILES_ACTIVE: dev
NACOS_SERVER_ADDR: nacos:8848
POSTGRES_HOST: postgres
volumes:
- ./urbanLifelineServ/system:/app
- maven_cache:/root/.m2
networks:
- ul-network
depends_on:
- postgres
- nacos
# ================== 前端服务 ==================
# 共享包服务Module Federation Remote
shared:
build:
context: ./urbanLifelineWeb
dockerfile: packages/shared/Dockerfile.dev
container_name: ul-shared
ports:
- "5000:5000"
volumes:
- ./urbanLifelineWeb/packages/shared:/app
- /app/node_modules
- pnpm_store:/root/.local/share/pnpm/store
networks:
- ul-network
environment:
- VITE_PORT=5000
- CHOKIDAR_USEPOLLING=true # 支持 Docker 内文件监听
command: pnpm dev
# 主应用Portal
portal:
build:
context: ./urbanLifelineWeb
dockerfile: packages/portal/Dockerfile.dev
container_name: ul-portal
ports:
- "3000:3000"
volumes:
- ./urbanLifelineWeb/packages/portal:/app
- ./urbanLifelineWeb/packages/shared:/shared
- /app/node_modules
- pnpm_store:/root/.local/share/pnpm/store
networks:
- ul-network
environment:
- VITE_PORT=3000
- VITE_API_BASE_URL=http://nginx/api
- VITE_SHARED_REMOTE=http://nginx/shared
- CHOKIDAR_USEPOLLING=true
depends_on:
- shared
command: pnpm dev
# 招投标应用
app-bidding:
build:
context: ./urbanLifelineWeb
dockerfile: packages/app-bidding/Dockerfile.dev
container_name: ul-app-bidding
ports:
- "3001:3001"
volumes:
- ./urbanLifelineWeb/packages/app-bidding:/app
- ./urbanLifelineWeb/packages/shared:/shared
- /app/node_modules
- pnpm_store:/root/.local/share/pnpm/store
networks:
- ul-network
environment:
- VITE_PORT=3001
- VITE_API_BASE_URL=http://nginx/api
- VITE_SHARED_REMOTE=http://nginx/shared
- CHOKIDAR_USEPOLLING=true
depends_on:
- shared
command: pnpm dev
# 智能客服应用
app-customer-service:
build:
context: ./urbanLifelineWeb
dockerfile: packages/app-customer-service/Dockerfile.dev
container_name: ul-app-cs
ports:
- "3002:3002"
volumes:
- ./urbanLifelineWeb/packages/app-customer-service:/app
- ./urbanLifelineWeb/packages/shared:/shared
- /app/node_modules
- pnpm_store:/root/.local/share/pnpm/store
networks:
- ul-network
environment:
- VITE_PORT=3002
- VITE_API_BASE_URL=http://nginx/api
- VITE_SHARED_REMOTE=http://nginx/shared
- CHOKIDAR_USEPOLLING=true
depends_on:
- shared
command: pnpm dev
# ================== 统一网关 ==================
# Nginx 统一入口
nginx:
image: nginx:alpine
container_name: ul-nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./docker/nginx/nginx.dev.conf:/etc/nginx/nginx.conf:ro
- ./docker/nginx/conf.d:/etc/nginx/conf.d:ro
- ./docker/nginx/ssl:/etc/nginx/ssl:ro
networks:
- ul-network
depends_on:
- gateway
- portal
- app-bidding
- app-customer-service
- shared
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost/health"]
interval: 10s
timeout: 5s
retries: 3
networks:
ul-network:
driver: bridge
volumes:
postgres_data:
redis_data:
nacos_data:
maven_cache:
pnpm_store: