前端项目结构
This commit is contained in:
263
docker-compose.dev.yml
Normal file
263
docker-compose.dev.yml
Normal 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:
|
||||
Reference in New Issue
Block a user