Files
urbanLifeline/docker-compose.dev.yml
2025-12-02 15:55:30 +08:00

264 lines
6.2 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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: