77 lines
2.9 KiB
Markdown
77 lines
2.9 KiB
Markdown
# 一、前言
|
||
|
||
我需要一个单机多服务部署的后台微服务架构。
|
||
|
||
> 执行目标:基于纯 Docker 环境构建可编译、可运行的最小化后端骨架,无宿主机依赖(无全局 Go/Protoc/Postgres/Redis 环境)
|
||
|
||
> 技术栈锁定: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/
|
||
│ ├── cmd/
|
||
│ │ └── main.go
|
||
│ ├── internal/
|
||
│ │ ├── config/
|
||
│ │ │ └── config.go
|
||
│ │ ├── ws/
|
||
│ │ │ ├── hub.go
|
||
│ │ │ ├── client.go
|
||
│ │ │ └── message.go
|
||
│ │ └── router/
|
||
│ │ └── router.go
|
||
│ ├── go.mod
|
||
│ └── Dockerfile
|
||
├── services/
|
||
│ └── user-svc/
|
||
│ ├── cmd/
|
||
│ │ └── main.go
|
||
│ ├── internal/
|
||
│ │ ├── config/
|
||
│ │ │ └── config.go
|
||
│ │ ├── domain/
|
||
│ │ │ └── user.go
|
||
│ │ ├── repository/
|
||
│ │ │ └── repo.go
|
||
│ │ ├── service/
|
||
│ │ │ └── service.go
|
||
│ │ └── grpcserver/
|
||
│ │ └── server.go
|
||
│ ├── proto/
|
||
│ │ └── user.proto
|
||
│ ├── migrations/
|
||
│ │ └── 001_init.sql
|
||
│ ├── go.mod
|
||
│ └── Dockerfile
|
||
├── shared/
|
||
│ ├── proto/
|
||
│ │ ├── common/
|
||
│ │ │ └── common.proto
|
||
│ │ └── generate.go
|
||
│ └── pkg/
|
||
│ ├── logger/
|
||
│ │ └── logger.go
|
||
│ ├── errors/
|
||
│ │ └── errors.go
|
||
│ ├── database/
|
||
│ │ └── postgres.go
|
||
│ └── cache/
|
||
│ └── redis.go
|
||
├── scripts/
|
||
│ ├── dev-start.sh # 纯 Docker 启动脚本
|
||
│ ├── gen-proto.sh # Docker 内编译 proto
|
||
│ └── docker-proto-builder/ # Protoc 编译容器配置
|
||
│ └── Dockerfile
|
||
├── docker-compose.yml # 全服务编排(含 proto 编译、Go 构建)
|
||
├── docker-compose.dev.yml # 开发模式编排(挂载源码、热更新)
|
||
├── Makefile # 封装 Docker 命令(兼容无宿主机 Make 环境)
|
||
└── README.md # 纯 Docker 环境使用说明
|
||
```
|
||
|
||
# 三、核心说明
|
||
|
||
不允污染宿主机,任何操作都只能通过 Docker 进行,绝对不在本地执行任何命令,不依赖本地环境,纯容器运行。
|
||
|
||
以上需求明白后,先创建基础骨架:包含 nginx、gateway、services/user-svc、shared、scripts、docker-compose.yml、Makefile,只创建目录结构,不写代码,让后等待我下一步指令。 |