拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

45分钟免安装部署 AzerothCore:用 Docker 从零跑起一个可登录的魔兽世界 3.3.5 私服

45分钟免安装部署 AzerothCore:用 Docker 从零跑起一个可登录的魔兽世界 3.3.5 私服

45分钟免安装部署 AzerothCore:用 Docker 从零跑起一个可登录的魔兽世界 3.3.5 私服

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

AzerothCore 是开源的 MMO 服务端引擎,完整承载魔兽世界 3.3.5(WoTLK)的服务器逻辑:账号、战斗、副本、社交全部可玩。照这篇做完,你会拿到一个 3.3.5 客户端直接登录的私服,全程不手动装 MySQL、不装编译工具链——镜像里都有。

开始前:一张清单 ⚡

项要求
系统Linux / macOS / Windows(WSL2 + Docker Desktop)
依赖Docker + Compose v2 插件(Docker Desktop 自带)
端口3306(库)、3724(认证)、8085(游戏)、7878(SOAP)空闲
磁盘预留 30GB:首次构建在容器内完整编译源码,还会下载世界数据
客户端一个魔兽世界 3.3.5 客户端,最后登录验证用

自检一条命令:

docker compose version && docker ps
  • 预期:两行输出,无报错即通过。
  • 通过标准:能打印出 Compose 版本号,且docker ps不提示守护进程未运行。

MySQL、编译工具、导入脚本都不用你操心:apps/docker/Dockerfile 基于 Ubuntu 24.04 用 CMake + clang 一次性编出全部服务。

第 1 步:拉取源码(2 分钟)

git clone https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk cd azerothcore-wotlk
  • 预期:下载数分钟,视网速而定。
  • 通过标准:目录里有docker-compose.yml和apps/docker/即完整。

第 2 步:一次构建全部镜像(30~60 分钟,耐心)

docker compose build

这一步会在容器里编译出 authserver、worldserver、dbimport、地图工具等全部组件,并打出 MySQL 导入、客户端数据初始化两个配套镜像。

  • 预期:首次构建 30~60 分钟,终端持续滚编译日志;构建层有缓存,之后改代码再构建快很多。
  • 通过标准:docker images出现acore/ac-wotlk-worldserver、acore/ac-wotlk-authserver等镜像名,命令无ERROR退出。

第 3 步:启动服务,等数据库导入跑完(5~15 分钟)

docker compose up -d

编排已写好启动顺序:MySQL 先起来并通过健康检查 →ac-db-import把 data/sql 下的基础库和升级脚本依次导入acore_auth、acore_world、acore_characters三个库 → 认证服与世界服才被拉起。

  • 预期:导入阶段docker compose logs -f ac-db-import里滚动出一条条 SQL 文件名;期间 worldserver 尚未启动,属正常。
  • 通过标准:docker compose ps中 ac-database、ac-authserver、ac-worldserver 三个常驻容器为 Up,而 ac-db-import 显示 "Completed"。

另外 entrypoint 会自动把镜像内的*.conf.dist模板复制成正式配置落到env/dist/etc/,你不需要手写任何配置文件。

第 4 步:建第一个管理员账号(1 分钟)

docker compose attach ac-worldserver

接入世界服控制台后输入(3为管理员安全等级,-1不限地图):

AC> account create admin password 3 -1

创建成功后按Ctrl+P再按Ctrl+Q脱离,别按Ctrl+C,那会把服务一起停掉。

  • 预期:即时完成。
  • 通过标准:控制台无报错且回到 shell 后docker compose ps里 ac-worldserver 仍为 Up。

验证:3.3.5 客户端进游戏 ✅

最小验证路径,四步走完即宣告部署成功:

  1. 打开魔兽世界 3.3.5 客户端,登录界面服务器地址填127.0.0.1(客户端不在本机则填宿主机局域网 IP)。
  2. 服务器列表出现 realm 条目——说明 3724 认证通了。
  3. 用admin/password登录,建角。
  4. 角色进图、场景正常加载——部署完成。

组件心智模型:5 个容器各干什么

  • ac-database:MySQL 8.4,root 密码默认password,只有 3306 映射到宿主机,方便你本地连库。
  • ac-db-import:一次性任务容器,导完三个库即退出,不常驻。
  • ac-client-data-init:一次性任务,下载 WoTLK 世界数据(mmaps/vmaps/dbc 等)到共享卷,世界服只读挂载它。
  • ac-authserver:监听 3724,先于世界服完成账号验证,再引导客户端连世界服。
  • ac-worldserver:监听 8085 处理全部游戏逻辑,7878 是 SOAP 接口,供外部工具调用。

依赖链一句话:database 健康 → db-import 完成、client-data 完成 → authserver / worldserver 启动。

排错手册:按症状查 🩺

1. entrypoint 打印权限 WARNING,worldserver 反复重启

  • 症状:docker compose ps里 ac-worldserver 状态来回跳,日志有 "doesn't have write permissions"。
  • 成因:源码以 root 克隆,挂载的env/dist属主是 uid 0,容器内用户写不进配置和日志。
  • 处置:宿主机执行sudo chown -R $(id -u):$(id -g) env/dist,再docker compose up -d。

2. 登录界面看不到服务器或一直转圈

  • 症状:服务器列表为空,或点击后无响应。
  • 成因:3724 / 8085 没映射到宿主机,或客户端地址填错。
  • 处置:ss -tlnp | grep -E '3724|8085'确认两个端口都在监听,客户端地址改宿主机 IP。

3. 等十几分钟 worldserver 仍没起

  • 症状:ac-worldserver一直 Pending。
  • 成因:db-import 还在导入(首次 5~15 分钟正常),或 MySQL 没通过健康检查。
  • 处置:docker compose logs -f ac-db-import看进度;失败时按日志末尾报的 SQL 文件排查,别中途down。

4.docker compose up报端口分配失败

  • 症状:port is already allocated一类报错。
  • 成因:宿主机已有 MySQL 占了 3306。
  • 处置:项目根目录建.env写DOCKER_DB_EXTERNAL_PORT=3307,重新docker compose up -d,容器内连接不受影响。

5. 改了*.conf.dist却完全不生效

  • 症状:重启后行为与改动前一模一样。
  • 成因:正式配置是首次启动时从模板复制的,模板只在目标文件不存在时才会被使用。
  • 处置:直接编辑env/dist/etc/worldserver.conf再重启容器。

进阶:端口、参数、模块

改端口:根目录.env里写外部映射即可,容器内部端口不用动,可用变量清单见 conf/dist/env.docker:

echo 'DOCKER_WORLD_EXTERNAL_PORT=8086' > .env && docker compose up -d

调参数:日常只动env/dist/etc/worldserver.conf,比如PlayerLimit(默认 1000,见 worldserver.conf.dist);加载严格程度查 配置策略说明:

sed -i 's/^PlayerLimit = .*/PlayerLimit = 50/' env/dist/etc/worldserver.conf && docker compose up -d

写第一个模块:用自带脚本生成骨架,启用后再重新构建镜像:

./modules/create_module.sh MyModule && echo "MyModule.Enabled = 1" > env/dist/etc/modules/MyModule.conf && docker compose build

把modules/MyModule骨架里的指令或任务逻辑填实,docker compose build重打镜像即可上线——这就是从部署走向二次开发的完整闭环。

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

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

返回列表