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

6.5 KiB
Raw Blame History

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.exeWindows 服务) 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

详细步骤见 快速部署