AzerothCore-WoTLK Docker部署:3条命令起服
【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk
自己搭一套魔兽世界私服,过去光配环境就要耗掉两个小时:装依赖、对数据库版本、查冲突。现在情况变了——AzerothCore-WoTLK 把整套服务端打包进了 Docker 容器,三条命令就能把服务拉起来。这篇部署教程按容器化流程走一遍,照着做即可跑通。
传统编译部署与 Docker 部署的差异速览
| 对比维度 | 传统编译部署 | 本文 Docker 部署 |
|---|---|---|
| 耗时 | 环境配置+编译常超两小时 | 首次构建 30-60 分钟,之后一键复跑 |
| 依赖管理 | 手动逐条安装,易与系统版本冲突 | 依赖全部打进镜像,与宿主机隔离 |
| 重置成本 | 清库重配,牵一发动全身 | 删容器删数据卷即可回到初始状态 |
| 环境一致性 | 依赖本机环境,跨机器易翻车 | 镜像标准化,换机器照常运行 |
差别的关键在于编译环境放进了镜像里,宿主机只负责跑容器。理解这一点后,下面所有操作都会很快。
开始部署前:AzerothCore 环境自检清单
- Docker Engine 20.10 或更高版本,用
docker --version确认 - Docker Compose v2 或更高版本,用
docker compose version确认 - 项目代码已获取:
git clone https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk cd azerothcore-wotlk进入目录后执行ls,能看到 docker-compose.yml 与apps/目录即说明获取成功,后续所有命令都在这个目录下执行。
部署主线:构建、起服与创建管理员账号
四张任务卡按顺序执行,每一步都依赖上一步的产物。构建细节可参考 apps/docker/README.md。
任务卡 1:构建容器镜像
- 命令:
docker compose build- 预期现象:首次构建约需 30-60 分钟,期间依次为 db-import、worldserver、authserver、client-data 各目标拉取依赖并编译,结束时没有报错。
- 验证:回看输出末尾,各阶段均出现 Successfully built,无 ERROR 行。
- 卡住了?:若构建中途因网络中断,重跑同一条命令即可,已完成的层会命中缓存,不会从头再来。
镜像就绪后就能拉起整套服务,compose 文件里已写死依赖顺序,启动先后无需自己操心。
任务卡 2:启动服务集群
- 命令:
docker compose up -d- 预期现象:五个服务依次就位——
ac-database(MySQL 数据库)、ac-db-import(数据库初始化)、ac-authserver(账号认证)、ac-worldserver(游戏世界)、ac-client-data-init(数据处理),首次启动时数据库导入会占掉一部分时间。 - 验证:
docker compose ps- 卡住了?:看到 3306 端口绑定失败就是端口冲突,直接跳到下方"端口 3306 被占用"一节处理。
服务跑起来后,服务器里还没有任何可用账号,所以下一步是建管理员。
任务卡 3:创建管理员账号
- 命令:
docker compose attach ac-worldserver- 预期现象:进入控制台后得到
AC>提示符,输入account create admin password 3 -1,命令执行无报错即建号成功。 - 验证:控制台正常返回
AC>提示符,无异常输出。 - 退出注意:离开控制台时先按
Ctrl+P再按Ctrl+Q,不要按Ctrl+C——那会直接终止服务。 - 卡住了?:如果误按
Ctrl+C导致 worldserver 停止,重新执行docker compose up -d即可恢复。
如果你打算改服务端代码,可以切到开发模式;纯体验玩家可直接跳到就绪确认一节。
任务卡 4:切换到开发环境(可选)
- 命令:
docker compose --profile dev up -d- 预期现象:
ac-dev-server容器启动,本地代码目录被挂载进容器。 - 验证:修改代码后执行
docker compose exec ac-dev-server cmake --build /azerothcore/var/build构建通过即代表热更新链路可用。
- 卡住了?:首次增量构建同样偏慢,失败时按输出中的编译报错逐行排查。
启动后如何确认服务全部就绪
满足以下两条,即可认为服务器就绪:
docker compose ps中ac-database、ac-authserver、ac-worldserver三个常驻服务均为 Up(healthy)状态;- 一次性容器
ac-db-import与ac-client-data-init已正常退出(Completed),这是初始化完成的标志而非故障。
此时默认端口 8085(world)与 3724(auth)已在宿主机监听,客户端可配置连接。
日常运维速查:看状态、查日志、改端口与备份
查看服务状态
docker compose ps # 一条命令看全部容器状态查看实时日志
docker compose logs -f ac-worldserver # 跟踪世界服务器日志 docker compose logs -f ac-authserver # 跟踪认证服务器日志修改数据库映射端口
echo "DOCKER_DB_EXTERNAL_PORT=3307" > .env && docker compose up -d # 3306 被占用时改映射到 3307备份数据库
docker compose exec ac-database mysqldump -u root -ppassword acore_world > world_backup.sql # 导出 world 库,定期执行日志文件同样会落在logs/目录,详细格式说明见 doc/Logging.md。
踩坑排查:按症状定位部署问题
端口 3306 被占用,数据库起不来
症状:docker compose up -d报 bind: address already in use。原因是宿主机已有 MySQL 占用了默认端口。解法:
DOCKER_DB_EXTERNAL_PORT=3307 docker compose up -d或把DOCKER_DB_EXTERNAL_PORT=3307写入.env文件后重启,效果持久。
worldserver 反复重启、客户端连不上
症状:ac-worldserver状态持续为 restarting。原因多为ac-db-import或ac-client-data-init尚未完成,依赖条件不满足。解法:先docker compose ps确认两个初始化容器已 Completed,再重跑docker compose up -d。
退出控制台后游戏服务停了
症状:attach 出来的控制台一关,ac-worldserver就停了。原因是退出时按了Ctrl+C,相当于向进程发了终止信号。解法:以后用Ctrl+P+Ctrl+Q离开;已经停了就docker compose up -d拉回。
首次启动久等无响应,疑似卡死
症状:up -d执行后长时间无新输出。原因是首次构建要 30-60 分钟、首条数据库导入也偏慢,属正常节奏。解法:耐心等待即可,后续启动复用缓存,耗时明显下降。
进阶调优:3 件收益明显的事
- 构建缓存:后续
docker compose build自动复用已构建层,重复部署快很多。 - 资源分配:按宿主机配置调整容器可分配的内存与 CPU。
- 数据持久化:用上面的 mysqldump 命令定期备份关键数据库。
命令速查表
| 操作 | 命令 |
|---|---|
| 构建镜像 | docker compose build |
| 启动全部服务 | docker compose up -d |
| 接入 worldserver 控制台 | docker compose attach ac-worldserver |
| 查看服务状态 | docker compose ps |
| 世界服务器日志 | docker compose logs -f ac-worldserver |
现在打开魔兽世界客户端,用 admin 账号登录,进世界看看吧。
【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考