86 lines
1.8 KiB
Markdown
86 lines
1.8 KiB
Markdown
# 后端微服务架构
|
|
|
|
这是一个基于纯 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
|
|
```
|
|
|
|
这将停止所有服务,移除卷,并清理镜像。
|