# 后端微服务架构 这是一个基于纯 Docker 环境构建的最小化后端骨架,不需要主机依赖。 ## 技术栈 - golang:1.26.1-alpine3.23 - postgres:18.3-alpine3.23 - redis:8.6.2-alpine - Docker/Docker Compose - nginx:1.25-alpine ## 目录结构 ``` ./backend/ ├── gateway/ # API 网关服务 ├── services/ # 微服务 │ └── user-svc/ # 用户服务 ├── shared/ # 共享代码和 proto 文件 ├── scripts/ # 工具脚本 ├── docker-compose.yml # 生产环境 docker compose 文件 ├── docker-compose.dev.yml # 开发模式 docker compose 文件 ├── Makefile # Docker 命令封装 └── README.md # 本文档 ``` ## 快速开始 ### 前置条件 - Docker - Docker Compose ### 启动服务 1. **构建并启动服务** ```bash # 使用 Makefile make up # 或使用脚本 ./scripts/dev-start.sh ``` 2. **以开发模式启动(热更新)** ```bash make up-dev ``` 3. **生成 proto 文件** ```bash make gen-proto ``` 4. **停止服务** ```bash make down ``` ### 访问服务 - Nginx: http://localhost:8080 - 网关: http://localhost:8000 - 用户服务: http://localhost:9000 - PostgreSQL: localhost:5432 - Redis: localhost:6379 ## 开发 ### 添加新服务 1. 在 `services/` 目录下创建新目录 2. 添加 `Dockerfile`、`go.mod` 和必要的目录结构 3. 更新 `docker-compose.yml` 和 `docker-compose.dev.yml` 以包含新服务 ### Proto 文件 - 在 `shared/proto/common/` 目录下添加 proto 文件 - 运行 `make gen-proto` 生成 Go 代码 ## 生产环境 对于生产部署,使用 `docker-compose.yml`,它会构建优化的镜像,不包含卷挂载。 ## 清理 ```bash make clean ``` 这将停止所有服务,移除卷,并清理镜像。