Files
youlegames/codes/agent/game-docker/README.md

132 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# YouleGames Docker 部署版
> 原项目 `codes/agent/game` 的 Docker 化改造,所有硬编码域名/IP/密码已外部化为环境变量,通过单一 `.env` 文件控制所有配置。
---
## 目录结构
```
game-docker/
├── .env.example # 环境变量模板(部署时复制为 .env
├── docker-compose.yml # Docker Compose 编排8 个服务)
├── deploy.sh # 一键部署脚本
├── init-ssl.sh # SSL 证书首次申请脚本
├── sync.ps1 # Windows 本地 → 服务器文件同步脚本
├── env_config.php # PHP 环境变量加载器api/ 和 dlweb/ 共用)
├── api/ # 网站1: 游戏核心 API 服务源码
├── dlweb/ # 网站2: 代理管理后台源码
├── wxserver_daoqi/ # 网站3: 微信小程序后端源码
├── docker/
│ ├── nginx/ # Nginx 配置模板 + SSL 参数
│ ├── api/ # API 镜像PHP 8.1 + Apache
│ ├── dlweb/ # DLWEB 镜像PHP 8.1 + Apache + Redis ext
│ ├── wxserver/ # wxserver 镜像Node.js 18 Alpine
│ ├── syncjob/ # Synchronize.php 轮询脚本(每 30s
│ ├── cronjob/ # 每日定时任务(替代 autorun.cmd
│ └── certbot/ # SSL 证书相关
└── docs/ # 详细文档(见下方文档导航)
```
---
## 整体架构
```
互联网
┌──────┴──────┐
│ Nginx │ ← SSL 终端 + 域名路由
│ :80 :443 │ 域名通过 .env 注入
└──┬───┬───┬─┘
┌───────────┤ │ ├───────────┐
▼ ▼ │ ▼ │
┌────────────┐ ┌────────┴──┐ ┌──────────┐
│ API │ │ DLWEB │ │ wxserver │
│ PHP 8.1 │ │ PHP 8.1 │ │ Node.js │
│ Apache │ │ Apache │ │ :3000 │
└─────┬──────┘ └─────┬─────┘ └──────────┘
│ │
│ ┌─────────┤ Docker 内网 (youle-net)
│ │ │
│ ▼ │
│ ┌──────────┐ │ ┌───────────┐ ┌───────────┐
│ │ syncjob │◄┼────►│ cronjob │ │ certbot │
│ │ 每30s轮询 │ │ │ 每日4:00 │ │ 12h续签 │
│ └──────────┘ │ └───────────┘ └───────────┘
│ │
▼ ▼
┌──────────────────────────┐ ┌──────────┐
│ MySQL (阿里云 RDS) │ │ Redis │
│ 多实例agent_db / │ │ :6379 │
│ game_db / grade_db │ └──────────┘
└──────────────────────────┘
```
### 服务清单8 个容器)
| 容器名 | 镜像 | 作用 | 端口 |
|--------|------|------|------|
| `youle-nginx` | nginx:alpine | SSL 终端 + 域名路由反向代理 | 80, 443 |
| `youle-api` | php:8.1-apache (自定义) | 游戏核心 API登录/支付/SDK | 8081 (内部) |
| `youle-dlweb` | php:8.1-apache (自定义) | 代理管理后台 | 8082 (内部) |
| `youle-wxserver` | node:18-alpine (自定义) | 微信小程序后端 | 3000 (内部) |
| `youle-syncjob` | alpine:3.19 | 每 30s POST `Synchronize.php`(数据同步) | 无 |
| `youle-cronjob` | alpine:3.19 | 每日凌晨 4:00 执行报表同步 | 无 |
| `youle-redis` | redis:7-alpine | 缓存服务(可选) | 6379 (内部) |
| `youle-certbot` | certbot/certbot | Let's Encrypt SSL 证书自动续签 | 无 |
---
## 与原版Windows 部署)的区别
| 项目 | 原版 Windows | Docker 版 |
|------|-------------|-----------|
| 环境 | Windows + Apache/XAMPP + Node.js | Docker 容器化 |
| 配置方式 | 硬编码在 PHP/JS/HTML 中 | 统一 `.env` 文件 |
| 域名切换 | 需改 30+ 个文件 | 只改 `.env` 的 1 个域名变量 |
| 数据库密码 | 明文散布在多个配置文件 | 集中在 `.env`(不进版本库) |
| SSL | 手动申请/部署证书 | certbot 自动申请 + 12h 自动续签 |
| Synchronize 轮询 | `HttpRequestService.exe`Windows 服务) | `syncjob` 容器Alpine + curl |
| 每日定时任务 | Windows 计划任务 → `autorun.cmd` | `cronjob` 容器Alpine crond |
---
## 文档导航
| 文档 | 内容 |
|------|------|
| [快速部署](./docs/01-deployment.md) | SSH 密钥配置、上传文件、环境变量准备、首次部署完整步骤 |
| [定时任务说明](./docs/02-scheduled-tasks.md) | syncjob / cronjob 原理、配置参数、日志查看 |
| [环境变量配置](./docs/03-env-variables.md) | 所有变量分组说明、域名推导关系、加载机制、文件修改生效方式 |
| [SSL 证书管理](./docs/04-ssl.md) | 首次申请、续签、更换域名后重新申请 |
| [常见运维操作](./docs/05-operations.md) | 更换域名、更换数据库、服务器迁移、服务管理、数据持久化 |
| [日志管理](./docs/06-logging.md) | 日志位置总览、查看命令、清除命令、Windows 远程操作 |
| [卸载和清理](./docs/07-uninstall.md) | 停止、删除容器、彻底清理的分级操作 |
| [数据库远程管理](./docs/08-database-remote.md) | Navicat SSH 隧道配置、RDS 实例对应关系、新设备接入 |
---
## 快速启动
```bash
# 1. 上传项目Windows 本地执行)
.\sync.ps1 -Mode full
# 2. 进入服务器
ssh root@47.98.203.17
cd /opt/youle/game-docker
# 3. 配置环境变量
cp .env.example .env
vim .env # 至少填写 ROOT_DOMAIN、DB 连接、微信配置
# 4. 首次申请 SSL 并启动
./deploy.sh ssl-init
./deploy.sh up
# 5. 确认状态
./deploy.sh status
```
> 详细步骤见 [快速部署](./docs/01-deployment.md)。