# ALiYunManager - 阿里云多服务 Docker 部署方案 ## 架构概览 ``` ┌─────────────────────────────────────────────────────────────┐ │ 阿里云服务器 (8.136.137.59) │ │ 主 Nginx (Docker 容器) │ │ ┌──────────┬──────────┬──────────────┬──────────────┐ │ │ │ me. │ www. │ api-resume. │api-miniapp. │ │ │ │dxz99wyr. │dxz99wyr. │ dxz99wyr.cn │dxz99wyr.cn │ │ │ │cn │cn │ │ │ │ │ └────┬─────┴────┬─────┴──────┬───────┴──────┬───────┘ │ │ │ │ │ │ │ │ ┌────▼─────┐ ┌──▼─────┐ ┌───▼──────┐ ┌────▼──────┐ │ │ │ Docker 1 │ │Docker 2│ │ Docker 3 │ │ Docker 4 │ │ │ │个人简历网站│ │小程序网站│ │个人简历后台│ │小程序后台 │ │ │ │内部Nginx │ │内部Nginx│ │内部Nginx │ │内部Nginx │ │ │ └──────────┘ └────────┘ └──────────┘ └───────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` ## 域名规划 | 服务 | 域名 | 类型 | |------|------|------| | 个人简历网站 | `me.dxz99wyr.cn` | 前端 | | 小程序网站 | `www.dxz99wyr.cn` | 前端 | | 个人简历后台 | `api-resume.dxz99wyr.cn` | API | | 小程序后台 | `api-miniapp.dxz99wyr.cn` | API | ## 目录结构 ``` ALiYunManager/ ├── docker-compose.yml # 主 Docker Compose 文件 ├── deploy.sh # 部署脚本 ├── README.md # 本文件 ├── nginx/ │ ├── nginx.conf # 主 Nginx 核心配置(**不要修改**) │ ├── conf.d/ # 各个服务的反向代理配置(由服务自行管理) │ │ ├── resume-web.conf │ │ ├── miniapp-web.conf │ │ ├── resume-api.conf │ │ └── miniapp-api.conf │ ├── ssl/ # SSL 证书目录 │ └── logs/ # 日志目录 └── services/ # 各个服务的配置(每个服务自行管理) ├── resume-web/ │ ├── nginx.conf # 服务内部 Nginx 配置 │ └── html/ # 静态文件 ├── miniapp-web/ │ ├── nginx.conf │ └── html/ ├── resume-api/ │ ├── nginx.conf # 内部 Nginx 配置或反向代理 │ └── Dockerfile # 后端 Dockerfile 模板 └── miniapp-api/ ├── nginx.conf └── Dockerfile ``` ## 核心设计原则 1. **主 Nginx 只负责反向代理**:将外部请求按域名分发到各个 Docker 容器 2. **每个服务独立管理自己的配置**: - 每个服务在 `nginx/conf.d/` 下放一个 `.conf` 文件(主 Nginx 加载) - 每个服务在 `services/服务名/` 下放自己的内部 Nginx 配置 3. **所有服务都在 Docker 容器中运行**:便于管理和隔离 4. **使用 Docker 内部网络通信**:主 Nginx 通过容器名直接访问服务 ## 快速开始 ### 1. 上传到服务器 ```bash # 在项目目录打包 zip -r aliyun-manager.zip ALiYunManager/ # 上传到服务器(使用你的密钥) scp -i "D:\003_Project\小程序连接.pem" aliyun-manager.zip root@8.136.137.59:/opt/ ``` ### 2. 在服务器上部署 ```bash ssh -i "D:\003_Project\小程序连接.pem" root@8.136.137.59 cd /opt unzip aliyun-manager.zip cd ALiYunManager chmod +x deploy.sh ./deploy.sh ``` ### 3. 配置 DNS 在域名管理后台添加以下解析记录: | 记录类型 | 主机记录 | 记录值 | |---------|---------|--------| | A | me | 8.136.137.59 | | A | miniapp | 8.136.137.59 | | A | api-resume | 8.136.137.59 | | A | api-miniapp | 8.136.137.59 | ## 常用命令 ```bash # 启动所有服务 docker-compose up -d # 停止所有服务 docker-compose down # 查看主 Nginx 日志 docker-compose logs -f nginx # 重启主 Nginx docker-compose restart nginx # 查看所有容器状态 docker-compose ps # 重载 Nginx 配置(不重启容器) docker-compose exec nginx nginx -s reload ``` ## 配置 HTTPS (SSL) ### 方法一:使用 Certbot (推荐) ```bash # 进入容器安装 certbot docker-compose exec nginx sh apk add certbot # 申请证书(需要先确保 DNS 已解析) certbot certonly --standalone -d me.dxz99wyr.cn -d www.dxz99wyr.cn -d api-resume.dxz99wyr.cn -d api-miniapp.dxz99wyr.cn ``` ### 方法二:手动配置 将证书文件放入 `nginx/ssl/` 目录: ``` nginx/ssl/ ├── me.dxz99wyr.cn.crt ├── me.dxz99wyr.cn.key └── ... ``` 然后修改对应服务的 `.conf` 文件,添加 443 监听和 SSL 配置。 ## 各服务如何接入 ### 前端网站接入 1. 将你的构建产物放入 `services/resume-web/html/` 目录 2. 如需修改内部 Nginx 配置,编辑 `services/resume-web/nginx.conf` 3. 如需修改反向代理规则,编辑 `nginx/conf.d/resume-web.conf` 4. 重启对应容器 ### 后端 API 接入 1. 替换 `services/resume-api/Dockerfile` 为你的后端 Dockerfile 2. 修改 `services/resume-api/nginx.conf` 中的 `upstream` 指向你的应用端口 3. 如需修改反向代理规则,编辑 `nginx/conf.d/resume-api.conf` 4. 重新构建并启动容器 ## 注意事项 1. **不要修改** `nginx/nginx.conf` 主配置文件,除非你需要调整全局参数 2. 各个服务的 `.conf` 文件命名不要冲突 3. 后端服务如果不需要内部 Nginx,可以直接暴露应用端口,主 Nginx 直接代理到应用端口 4. 生产环境建议开启防火墙,只开放 80 和 443 端口