news 2026/9/19 18:23:17

30 分钟从零跑起来:AzerothCore-WoTLK 容器化部署完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
30 分钟从零跑起来:AzerothCore-WoTLK 容器化部署完整指南

30 分钟从零跑起来:AzerothCore-WoTLK 容器化部署完整指南

【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk

想在自己的机器上拉起一个 WoTLK 世界,却不想被一堆依赖折磨?把 AzerothCore-WoTLK 的搭建交给 Docker,整个流程基本就是三条命令的事。所谓容器化部署,就是像海运集装箱那样,把应用、依赖、运行环境一起"装箱"——箱子到哪都能开,行为处处一致。本文带你用 docker compose 完成 AzerothCore-WoTLK 搭建:从拉代码、构建镜像,到启动集群、建管理员账号,再到备份恢复与开发模式,一次讲透。

🧭 开工前先认脸:集群里有谁?

启动前把四个核心角色看一遍,后面排查问题全靠这张表:

组件职责默认对外端口注意事项
ac-databaseMySQL 8.4,存放账号、角色、世界三大库,所有持久化数据都在这3306数据写在ac-database卷里,容器删了数据还在;可用DOCKER_DB_EXTERNAL_PORT改端口
ac-authserver认证服务器,处理登录请求与身份验证3724密码加密存储;端口可用DOCKER_AUTH_EXTERNAL_PORT
ac-worldserver世界服务器,跑游戏世界逻辑与玩家交互8085多线程处理,内存建议至少 4GB;另有 SOAP 接口端口 7878
ac-db-import一次性任务:首次启动时把data/sql里的 SQL 导入数据库跑完自动退出,首次up会比较久,属正常现象

另外还有一个按需启用的ac-dev-server(开发模式专用),用到再说。

📦 拉代码、造箱子

这一步解决什么问题?把源码拿下来,并把三个服务端镜像编译出来——镜像就是"装好货的箱子",后续启动全部基于它。

git clone https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk cd azerothcore-wotlk docker compose build

为什么执行docker compose build?它会根据apps/docker/Dockerfile下载依赖、编译 authserver / worldserver / db-import 各镜像。首次构建大约 30–60 分钟,去喝杯咖啡回来,之后每次构建会快很多。预期看到什么?构建日志一路滚到每个 image 构建成功即可。

🚀 把箱子拆开:启动整个集群

这一步解决什么问题?让数据库、认证、世界服务按依赖顺序全部跑起来(docker compose会先等ac-database健康、ac-db-import跑完才拉起服务端)。

# 后台启动全部服务 docker compose up -d # 想顺便跳过单独 build 步骤,也可以一步到位 docker compose up -d --build

预期看到什么?docker compose psac-databaseac-authserverac-worldserver均为Upac-db-import显示已正常退出(Exited (0)),这才是健康状态,别被它"停了"吓到。

首次up会等数据库导入,耗时几分钟很正常。如果 3306 端口被占了,在命令前加环境变量即可:

# 把数据库对外端口改成 3307 再启动 DOCKER_DB_EXTERNAL_PORT=3307 docker compose up -d

🔑 建第一个管理员账号

这一步解决什么问题?服务端刚出生没有任何账号,你得进世界服务器控制台亲手创建第一个 GM。

docker compose attach ac-worldserver

进入控制台后输入:

AC> account create admin password 3 -1

参数含义:用户名admin、密码password、权限等级3(GM)、扩张包 ID-1(不限扩张包)。建完用客户端连 8085 端口试试登录。

离开控制台有讲究:按Ctrl+P松开后再按Ctrl+Q退出。直接关终端或Ctrl+C会把控制台连同服务一起带停,前功尽弃。

📊 跑起来之后:看状态、翻日志、做备份

日常运维其实就三件事:

# 1. 看谁在跑 docker compose ps # 2. 实时盯世界服务器日志 docker compose logs -f ac-worldserver

3. 备份与恢复——把整个世界导出成 SQL,再导回去:

# 备份 db_world(root 密码默认就是 password) docker compose exec ac-database mysqldump -u root -ppassword acore_world > backup.sql # 恢复 cat backup.sql | docker compose exec -T ac-database mysql -u root -ppassword acore_world

两条顺手的性能建议:给ac-worldserver留足内存(至少 4GB);想加大数据库缓存,可在 compose 环境里设置MYSQL_INNODB_BUFFER_POOL_SIZE。日志文件会慢慢膨胀,定期清理env/dist/logs目录,别让磁盘先于服务器倒下。

🛠️ 开发模式:代码改了,原地重编

这一步解决什么问题?你要改服务端源码,而不是跑成品。dev profile 会把当前源码目录挂载进容器,编译产物留在容器卷里。

# 启动含开发服务端的集群(ac-dev-server) docker compose --profile dev up -d # 改完代码后重新编译世界服务器 docker compose exec ac-dev make -j 4 worldserver

注意:源码挂载对文件系统有要求,Linux、WSL2 或 ext 系文件系统体验最好。

❓ 端口被占了?服务起不来?

端口冲突不用改配置文件,启动时加环境变量覆盖:

# 认证改 3725、世界改 8086 一起调 DOCKER_AUTH_EXTERNAL_PORT=3725 DOCKER_WORLD_EXTERNAL_PORT=8086 docker compose up -d

服务启动失败时按这个顺序查:

  1. 先看日志定位报错:
docker compose logs ac-worldserver | grep -i error
  1. 再确认数据库数据卷是否正常挂载:
docker volume inspect azerothcore-wotlk_ac-database-data
  1. 最后检查 Docker 引擎的 CPU/内存配额是否给够了。

✅ 现在轮到你动手

照着这份清单走一遍,30 分钟内你应该能看到自己的 WoTLK 世界跑起来:

  1. git clone仓库并进入目录
  2. docker compose build(首次耐心等 30–60 分钟)
  3. docker compose up -d,用docker compose ps确认三个服务Up
  4. docker compose attach ac-worldserver创建 GM 账号,Ctrl+PCtrl+Q退出
  5. 客户端连 3724 / 8085 端口登录
  6. 养成习惯:改配置前先跑一次mysqldump备份

装好了之后,下一步可以去data/sql/目录看看世界数据是怎么组织的,或者用--profile dev给自己搭一个能热重编的开发环境——这个容器化部署的游戏服务端,从私服到开发环境都能接得住。

【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/19 18:23:05

Ubuntu 24.04编译Android 16 Cuttlefish完整指南:环境配置与踩坑详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/19 18:20:54

淘宝搜索排名核心机制与实操优化指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/19 18:19:59

ANSYS Fluent DPM锥形注入原理与工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/19 18:17:19

JEB Pro 5.44实战:Android逆向与跨平台动态调试指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/19 18:14:18

深入解析Linux队列自旋锁:缓存一致性瓶颈与MCS算法实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华