# Urban Lifeline Docker 部署指南 ## 目录结构 ``` docker/ ├── docker-compose.yml # 总控 compose 文件 ├── Makefile # 构建管理脚本 ├── .env.example # 环境变量模板 ├── README.md # 本文档 │ ├── infra/ # Level 1: 基础设施 │ └── docker-compose.yml # Nacos, MinIO, Jitsi Meet │ ├── urbanLifeline/ │ ├── serv/ # Level 2: 后端服务 │ │ ├── docker-compose.yml │ │ ├── Dockerfile.base # 基础镜像 │ │ ├── Dockerfile.template # 服务镜像模板 │ │ └── start.sh # 启动脚本 │ │ │ └── web/ # Level 3: 前端服务 │ ├── docker-compose.yml │ ├── Dockerfile │ └── nginx/ # Nginx 配置 │ ├── nginx.conf │ └── conf.d/ │ ├── dify/ # Dify AI 平台(独立管理) │ └── docker-compose.yaml │ ├── volumes/ # 数据卷目录 │ ├── nacos/ │ ├── minio/ │ ├── jitsi/ │ └── logs/ │ └── output/ # 镜像导出目录 ``` ## 快速开始 ### 1. 准备环境 ```bash # 复制环境变量配置 cp .env.example .env # 编辑配置(根据实际环境修改) vim .env ``` ### 2. 编译项目 ```bash # 编译所有后端服务 make compile-serv # 编译所有前端项目 make compile-web # 或者一次性编译所有 make full-build ``` ### 3. 构建镜像 ```bash # 构建基础镜像(首次需要) make build-base # 构建所有镜像 make build-all # 或者单独构建 make build-gateway make build-system make build-web ``` ### 4. 启动服务 ```bash # 启动所有服务 make up # 或者分层启动 make up-infra # 先启动基础设施 make up-serv # 再启动后端服务 make up-web # 最后启动前端 ``` ### 5. 查看状态 ```bash # 查看服务状态 make status # 查看日志 make logs # 查看特定服务日志 docker compose logs -f gateway ``` ## 服务层级 ### Level 1: 基础设施 (infra) - **Nginx**: 反向代理 + 前端静态资源 (80/443) - **Nacos**: 服务注册与配置中心 (8848) - **MinIO**: 对象存储服务 (9000/9001) - **Jitsi Meet**: 视频会议服务 (8280) ### Level 2: 后端服务 (serv) 启动顺序: gateway → system → file → auth → ai → workcase | 服务 | 端口 | 说明 | |------|------|------| | gateway | 8080 | API 网关 | | system | 8082 | 系统服务 | | file | 8084 | 文件服务 | | auth | 8081 | 认证服务 | | ai | 8090 | AI 服务 | | workcase | 8088 | 工单服务 | ### Level 3: 前端应用 (web) 前端静态资源已打包到 Nginx 镜像中,由 infra 层的 Nginx 服务提供: - /platform - 管理平台 - /workcase - 工单系统 ## 常用命令 ```bash # 构建 make build-all # 构建所有镜像 make build-gateway # 构建单个服务 # 运行 make up # 启动所有 make up-infra # 只启动基础设施 make down # 停止所有 # 导出 make save-all # 导出所有镜像 make save-gateway # 导出单个镜像 # 清理 make clean # 清理构建产物 make clean-images # 清理 Docker 镜像 ``` ## 单独管理子服务 每个子目录都有独立的 docker-compose.yml,可以单独管理: ```bash # 只管理基础设施 cd infra docker compose up -d nacos docker compose logs -f nacos # 只管理后端服务 cd urbanLifeline/serv docker compose up -d gateway docker compose restart system ``` ## 镜像导出与部署 ```bash # 导出所有镜像 make save-all # 镜像文件在 output/ 目录 ls -la output/ # 在目标服务器加载镜像 docker load -i urban-lifeline-gateway_20251228_120000.tar docker load -i urban-lifeline-web_20251228_120000.tar ``` ## 注意事项 1. **首次部署**需要先构建基础镜像: `make build-base` 2. **MySQL** 需要在宿主机或单独容器中运行,配置 `MYSQL_HOST` 3. **Dify** 有独立的 docker-compose,在 `dify/` 目录单独管理 4. 修改 `.env` 后需要重启服务才能生效 5. 生产环境建议配置 SSL 证书