尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

从 clone 到登录:三十分钟用 Docker 部署 AzerothCore 魔兽世界私有服

从 clone 到登录:三十分钟用 Docker 部署 AzerothCore 魔兽世界私有服 从 clone 到登录:三十分钟用 Docker 部署 AzerothCore 魔兽世界私有服【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk适合会用命令行、但没碰过魔兽世界服务器框架的读者。本文按实际仓库的docker-compose.yml走一遍 Docker 部署 AzerothCore 的流程,跑完后能用 3.3.5 客户端登录自己搭的服务器。 先说结果:三条命令之后的样子clone 仓库、构建镜像、启动服务,一共三条核心命令。首次构建会在容器里用 cmake ninja 从零编译整个引擎,视机器性能与网络,通常要 30 到 60 分钟;之后每次启动都是分钟级。最终得到的是:一个 MySQL 数据库、一个 authserver、一个 worldserver,外加生成好的配置与日志目录。建好管理员账号后,客户端就能直接登录。跑之前看一眼装了 Docker 且带 Compose v2,Docker Desktop 已内置 buildx4GB 以上可用内存,全量编译比较吃内存20GB 以上空闲磁盘,镜像层加数据库卷都不小网络稳定,构建阶段和首次启动都要下载依赖与客户端数据Linux、macOS 或 Windows WSL2 均可 这套东西是怎么拼的服务对外端口一句话职责ac-database3306MySQL 8.4,存放 auth/world/characters 三套库ac-db-import—一次性容器,把data/sql的数据导入数据库后退出ac-client-data-init—一次性容器,下载 DBC 等客户端数据到ac-client-data卷ac-authserver3724登录握手与账号验证ac-worldserver8085(7878为 SOAP)跑全部游戏玩法与地图逻辑两个一次性容器是 worldserver 的前置条件,docker-compose.yml里用depends_on排好了顺序:先等数据库健康检查通过,再导数据、下载客户端数据,最后才拉起两个服务器,不用手动操心次序。文件注释明确提醒不要改主文件,所有端口、密码都支持环境变量覆盖,改动一律放docker-compose.override.yml。 动手部署:三步把整套服务跑起来第一步,取代码:git clone https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk cd azerothcore-wotlk构建上下文就是仓库根目录,Dockerfile 位于apps/docker/内。第二步,构建镜像:docker compose build这一步把源码完整编译一遍,是首次最慢的环节;镜像里启用了 ccache,后续重编译会快很多。第三步,启动全部服务:docker compose up -d首次启动会卡在数据库导入上,耐心等docker compose ps里所有容器都变 running/healthy 即可。进去之后:建管理员账号并验证登录docker compose attach ac-worldserver进入控制台后执行:AC account create admin admin123 3 -13是最高权限等级。退出控制台用 CtrlP 再按 CtrlQ,直接 CtrlC 会把容器停掉。建完记得改默认密码,然后让 3.3.5 客户端指向本机,应能在服务器列表里看到 realm。日常运维速查场景命令备注看容器状态docker compose ps关注 healthy 状态跟踪日志docker compose logs -f ac-worldserver排错第一站安全停止docker compose down数据卷保留完全重置docker compose down -v删光所有数据,慎用重启单服务docker compose restart ac-worldserver改配置后常用备份与恢复,root 密码默认是password,改过DOCKER_DB_ROOT_PASSWORD的自行替换:docker compose exec ac-database mysqldump -u root -ppassword acore_world world_$(date %F).sqldocker compose exec -i ac-database mysql -u root -ppassword acore_world world.sql️ 卡住了怎么办症状:端口被占用,服务起不来 检查:sudo lsof -i :8085(3306、3724 同理) 处理:DOCKER_WORLD_EXTERNAL_PORT8086 docker compose up -d,数据库用DOCKER_DB_EXTERNAL_PORT同理症状:worldserver 反复重启或启动后立刻退出 检查:docker compose logs ac-worldserver处理:通常是数据库没就绪,等ac-db-import跑完再看docker compose ps症状:客户端里看不到 realm 检查:docker compose logs ac-authserver处理:确认客户端指向的是本机 IP 且 3724 端口可达,本机一般填localhost即可想继续折腾改端口:DOCKER_DB_EXTERNAL_PORT、DOCKER_WORLD_EXTERNAL_PORT、DOCKER_AUTH_EXTERNAL_PORT三个环境变量在up前带上即可。热更新:改了src/server/game/下的代码后,docker compose build ac-worldserver docker compose restart ac-worldserver;仓库还带了一个挂载整个源码树的 dev profile,适合长期开发,见apps/docker/Dockerfile.dev-server。写自定义模块:./modules/create_module.sh MyModule,模板和说明在modules/how_to_make_a_module.md。服务到这里就跑起来了,接下来一般可以先打开env/dist/etc/下首次生成的 worldserver 配置文件,把 realm 名字和玩家上限改成自己的(以实际仓库为准)。【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表