# Urban Lifeline Docker 部署 (All-in-One)

## 目录结构

```
docker/urbanLifeline/
├── .env.example          # 环境变量示例
├── Makefile              # 快捷命令
├── README.md             # 本文档
├── serv/                 # 后端服务
│   ├── build.sh          # 构建脚本
│   ├── Dockerfile.base   # 基础镜像
│   ├── Dockerfile.serv   # 服务镜像
│   └── service-manager.sh # 服务管理脚本
└── web/                  # 前端应用
    ├── build.sh          # 构建脚本
    ├── Dockerfile.web    # 前端镜像
    └── web-manager.sh    # 前端管理脚本
```

## 服务端口

### 后端服务 (urban-lifeline-serv)
| 服务 | 端口 | 说明 |
|------|------|------|
| gateway | 8080 | API 网关 |
| auth | 8081 | 认证服务 |
| system | 8082 | 系统服务 |
| log | 8083 | 日志服务 |
| file | 8084 | 文件服务 |
| message | 8085 | 消息服务 |
| crontab | 8086 | 定时任务 |
| bidding | 8087 | 招标服务 |
| workcase | 8088 | 工单服务 |
| platform | 8089 | 平台服务 |
| ai | 8090 | AI 服务 |

### 前端应用 (urban-lifeline-web)
| 应用 | 端口 | 说明 |
|------|------|------|
| shared | 8000 | 公共模块 (Module Federation) |
| platform | 8001 | 管理平台 |
| workcase | 8002 | 工单系统 PC |
| bidding | 8003 | 招标系统 |
| workcase_wechat | 8004 | 工单微信端 |

## 快速开始

### 1. 准备环境变量
```bash
cd docker/urbanLifeline
cp .env.example .env
# 编辑 .env 配置
```

### 2. 构建镜像
```bash
# 构建后端 (需先编译 Java)
cd urbanLifelineServ && mvn clean package -DskipTests
cd docker/urbanLifeline && make build-serv

# 构建前端 (需先构建前端)
cd urbanLifelineWeb && pnpm build
cd docker/urbanLifeline && make build-web
```

### 3. 启动服务
```bash
make up
```

### 4. 管理服务
```bash
# 查看状态
make status

# 重启单个后端服务
make restart-serv SERVICE=gateway

# 重启单个前端站点
make restart-web SITE=platform

# 查看日志
make logs
```

## 配置外挂

容器支持配置外挂，可在运行时覆盖默认配置：

### 后端配置目录结构
```
volumes/config/serv/
├── gateway.yml          # gateway 服务配置
├── system.yml           # system 服务配置
├── auth.yml             # auth 服务配置
├── file.yml             # file 服务配置
├── log.yml              # log 服务配置
├── message.yml          # message 服务配置
├── crontab.yml          # crontab 服务配置
├── ai.yml               # ai 服务配置
├── bidding.yml          # bidding 服务配置
├── platform.yml         # platform 服务配置
└── workcase.yml         # workcase 服务配置
```

每个服务的配置文件会通过 `spring.config.additional-location` 加载，覆盖 JAR 包内的默认配置。

### 前端配置
```
volumes/config/web/
├── env.js               # 运行时环境变量
└── config.json          # 应用配置
```

## 依赖服务

确保以下基础设施服务已启动：
- Nacos (服务注册/配置中心)
- PostgreSQL (数据库)
- Redis (缓存)
- MinIO (对象存储)

通过 `docker compose --profile infra up -d` 启动基础设施。
