From 17d9522502d3a74e031c707772713cb59f18dd0a Mon Sep 17 00:00:00 2001 From: fish Date: Sat, 28 Mar 2026 18:21:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E6=88=90=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=E5=85=A8=E5=A5=97=E8=87=AA=E5=8A=A8=E5=8C=96=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E3=80=81Makefile=E3=80=81README=EF=BC=8C=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E4=B8=80=E9=94=AE=E5=90=AF=E5=8A=A8=E4=B8=8E=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/Makefile | 12 +++- backend/README.md | 118 +++++++++++++++++++++++++++++++++++ backend/scripts/dev-start.sh | 58 +++++++++++++++++ backend/scripts/gen-proto.sh | 25 ++++++++ 4 files changed, 212 insertions(+), 1 deletion(-) create mode 100644 backend/README.md create mode 100755 backend/scripts/dev-start.sh create mode 100755 backend/scripts/gen-proto.sh diff --git a/backend/Makefile b/backend/Makefile index 86695a5..118d669 100644 --- a/backend/Makefile +++ b/backend/Makefile @@ -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 ./..." diff --git a/backend/README.md b/backend/README.md new file mode 100644 index 0000000..c96d698 --- /dev/null +++ b/backend/README.md @@ -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 卷 diff --git a/backend/scripts/dev-start.sh b/backend/scripts/dev-start.sh new file mode 100755 index 0000000..1c655d4 --- /dev/null +++ b/backend/scripts/dev-start.sh @@ -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}" diff --git a/backend/scripts/gen-proto.sh b/backend/scripts/gen-proto.sh new file mode 100755 index 0000000..49389c2 --- /dev/null +++ b/backend/scripts/gen-proto.sh @@ -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