# 一、前言 我需要一个单机多服务部署的后台微服务架构。 > 执行目标:基于纯 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,只创建目录结构,不写代码,让后等待我下一步指令。