6.5 KiB
6.5 KiB
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) |
文档导航
| 文档 | 内容 |
|---|---|
| 快速部署 | SSH 密钥配置、上传文件、环境变量准备、首次部署完整步骤 |
| 定时任务说明 | syncjob / cronjob 原理、配置参数、日志查看 |
| 环境变量配置 | 所有变量分组说明、域名推导关系、加载机制、文件修改生效方式 |
| SSL 证书管理 | 首次申请、续签、更换域名后重新申请 |
| 常见运维操作 | 更换域名、更换数据库、服务器迁移、服务管理、数据持久化 |
| 日志管理 | 日志位置总览、查看命令、清除命令、Windows 远程操作 |
| 卸载和清理 | 停止、删除容器、彻底清理的分级操作 |
| 数据库远程管理 | Navicat SSH 隧道配置、RDS 实例对应关系、新设备接入 |
快速启动
# 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
详细步骤见 快速部署。