feat: 完成后端全套自动化脚本、Makefile、README,支持一键启动与测试
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Makefile for backend services
|
||||
|
||||
.PHONY: build up down logs status dev-up dev-down
|
||||
.PHONY: build up down logs status dev-up dev-down gen-proto dev-start test
|
||||
|
||||
build:
|
||||
docker-compose build
|
||||
@@ -31,3 +31,13 @@ status:
|
||||
|
||||
dev-status:
|
||||
docker-compose -f docker-compose.dev.yml ps
|
||||
|
||||
gen-proto:
|
||||
chmod +x ./scripts/gen-proto.sh && ./scripts/gen-proto.sh
|
||||
|
||||
dev-start:
|
||||
chmod +x ./scripts/dev-start.sh && ./scripts/dev-start.sh
|
||||
|
||||
test:
|
||||
echo "Running tests..."
|
||||
docker-compose -f docker-compose.dev.yml run --rm user-svc sh -c "go test ./..."
|
||||
|
||||
118
backend/README.md
Normal file
118
backend/README.md
Normal file
@@ -0,0 +1,118 @@
|
||||
# Backend Services
|
||||
|
||||
## 项目结构
|
||||
|
||||
```
|
||||
backend/
|
||||
├── nginx/ # Nginx 配置
|
||||
├── gateway/ # WebSocket 网关服务
|
||||
├── services/
|
||||
│ └── user-svc/ # 用户微服务
|
||||
├── shared/ # 公共工具包
|
||||
│ ├── logger/ # 日志工具
|
||||
│ ├── errors/ # 错误处理
|
||||
│ ├── postgres/ # PostgreSQL 数据库
|
||||
│ ├── redis/ # Redis 缓存
|
||||
│ └── proto/ # 公共 proto 定义
|
||||
├── scripts/ # 自动化脚本
|
||||
├── docker-compose.yml # 生产环境配置
|
||||
├── docker-compose.dev.yml # 开发环境配置
|
||||
├── Makefile # 命令封装
|
||||
└── README.md # 使用说明
|
||||
```
|
||||
|
||||
## 环境要求
|
||||
|
||||
- Docker
|
||||
- Docker Compose
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 开发环境
|
||||
|
||||
1. 一键启动开发环境:
|
||||
|
||||
```bash
|
||||
make dev-start
|
||||
```
|
||||
|
||||
这会自动:
|
||||
- 生成 proto 代码
|
||||
- 构建开发环境镜像
|
||||
- 启动所有服务
|
||||
- 显示服务状态
|
||||
|
||||
2. 查看服务状态:
|
||||
|
||||
```bash
|
||||
make dev-status
|
||||
```
|
||||
|
||||
3. 查看服务日志:
|
||||
|
||||
```bash
|
||||
make dev-logs
|
||||
```
|
||||
|
||||
4. 停止开发环境:
|
||||
|
||||
```bash
|
||||
make dev-down
|
||||
```
|
||||
|
||||
### 生产环境
|
||||
|
||||
1. 构建生产环境:
|
||||
|
||||
```bash
|
||||
make build
|
||||
```
|
||||
|
||||
2. 启动生产环境:
|
||||
|
||||
```bash
|
||||
make up
|
||||
```
|
||||
|
||||
3. 停止生产环境:
|
||||
|
||||
```bash
|
||||
make down
|
||||
```
|
||||
|
||||
## 其他命令
|
||||
|
||||
### 生成 proto 代码
|
||||
|
||||
```bash
|
||||
make gen-proto
|
||||
```
|
||||
|
||||
### 运行测试
|
||||
|
||||
```bash
|
||||
make test
|
||||
```
|
||||
|
||||
## 服务端口
|
||||
|
||||
- Nginx: 80
|
||||
- Gateway: 8080
|
||||
- User Service: 50051
|
||||
- PostgreSQL: 5432
|
||||
- Redis: 6379
|
||||
|
||||
## 技术栈
|
||||
|
||||
- Go 1.26.1
|
||||
- gRPC
|
||||
- PostgreSQL
|
||||
- Redis
|
||||
- Nginx
|
||||
- Docker
|
||||
|
||||
## 注意事项
|
||||
|
||||
- 所有服务都在 Docker 容器中运行,无宿主机依赖
|
||||
- 服务之间通过内部网络通信
|
||||
- 数据持久化使用 Docker 卷
|
||||
58
backend/scripts/dev-start.sh
Executable file
58
backend/scripts/dev-start.sh
Executable file
@@ -0,0 +1,58 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 一键开发环境启动脚本
|
||||
|
||||
# 定义颜色
|
||||
GREEN="\033[0;32m"
|
||||
YELLOW="\033[1;33m"
|
||||
RED="\033[0;31m"
|
||||
NC="\033[0m" # No Color
|
||||
|
||||
echo -e "${GREEN}Starting development environment setup...${NC}"
|
||||
|
||||
# 检查 Docker 是否安装
|
||||
if ! command -v docker &> /dev/null; then
|
||||
echo -e "${RED}Docker is not installed! Please install Docker first.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查 Docker Compose 是否安装
|
||||
if ! command -v docker-compose &> /dev/null; then
|
||||
echo -e "${RED}Docker Compose is not installed! Please install Docker Compose first.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 生成 proto 代码
|
||||
echo -e "${YELLOW}Generating proto code...${NC}"
|
||||
if ./scripts/gen-proto.sh; then
|
||||
echo -e "${GREEN}Proto code generated successfully!${NC}"
|
||||
else
|
||||
echo -e "${RED}Failed to generate proto code!${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 构建开发环境
|
||||
echo -e "${YELLOW}Building development environment...${NC}"
|
||||
if docker-compose -f docker-compose.dev.yml build; then
|
||||
echo -e "${GREEN}Build completed successfully!${NC}"
|
||||
else
|
||||
echo -e "${RED}Build failed!${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 启动开发环境
|
||||
echo -e "${YELLOW}Starting development environment...${NC}"
|
||||
if docker-compose -f docker-compose.dev.yml up -d; then
|
||||
echo -e "${GREEN}Development environment started successfully!${NC}"
|
||||
else
|
||||
echo -e "${RED}Failed to start development environment!${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 显示服务状态
|
||||
echo -e "${YELLOW}Service status:${NC}"
|
||||
docker-compose -f docker-compose.dev.yml ps
|
||||
|
||||
echo -e "${GREEN}Development environment setup completed!${NC}"
|
||||
echo -e "${YELLOW}To view logs, run: make dev-logs${NC}"
|
||||
echo -e "${YELLOW}To stop the environment, run: make dev-down${NC}"
|
||||
25
backend/scripts/gen-proto.sh
Executable file
25
backend/scripts/gen-proto.sh
Executable file
@@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 生成 proto 代码的脚本
|
||||
|
||||
# 定义颜色
|
||||
GREEN="\033[0;32m"
|
||||
YELLOW="\033[1;33m"
|
||||
RED="\033[0;31m"
|
||||
NC="\033[0m" # No Color
|
||||
|
||||
echo -e "${GREEN}Starting proto compilation...${NC}"
|
||||
|
||||
# 使用 Docker 运行 protoc 编译
|
||||
if docker run --rm -v "$(pwd):/app" -w /app golang:1.26.1-alpine3.23 sh -c "\
|
||||
apk add --no-cache protobuf-dev && \
|
||||
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest && \
|
||||
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest && \
|
||||
protoc --go_out=. --go-grpc_out=. services/user-svc/user.proto && \
|
||||
protoc --go_out=. --go-grpc_out=. shared/proto/common.proto\
|
||||
"; then
|
||||
echo -e "${GREEN}Proto compilation completed successfully!${NC}"
|
||||
else
|
||||
echo -e "${RED}Proto compilation failed!${NC}"
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user