264 lines
6.2 KiB
YAML
264 lines
6.2 KiB
YAML
|
|
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:
|