AzerothCore-WoTLK Docker Compose部署:多容器协同配置
你是否还在为MMO服务器搭建的复杂环境配置而烦恼?是否因数据库、认证服务、游戏逻辑服务的协同工作而头疼?本文将带你通过Docker Compose一键部署AzerothCore-WoTLK服务器,实现多容器无缝协作,让你轻松拥有自己的魔兽世界私人服务器。读完本文,你将掌握容器化部署的核心配置、环境变量设置、服务间依赖管理以及常见问题排查方法。
容器架构概览
AzerothCore-WoTLK的Docker Compose部署方案采用模块化设计,通过多个专用容器实现服务解耦与协同。核心容器架构如下:
graph TD
subgraph AzerothCore容器集群
A[ac-database\nMySQL数据库] -->|提供数据存储| B[ac-db-import\n数据库初始化]
B --> C[ac-authserver\n认证服务]
B --> D[ac-worldserver\n游戏世界服务]
E[ac-client-data-init\n客户端数据] --> D
C -->|认证协议| D
end
核心容器组件说明:
- 数据库容器(ac-database):基于MySQL 8.4,存储账号、角色、游戏世界等核心数据,通过卷ac-database持久化数据
- 数据库初始化容器(ac-db-import):负责数据库结构创建与初始数据导入,依赖健康状态的数据库服务[docker-compose.yml#L53-L54]
- 认证服务器容器(ac-authserver):处理玩家登录认证,监听3724端口[docker-compose.yml#L123]
- 游戏世界容器(ac-worldserver):核心游戏逻辑服务,依赖数据库初始化和客户端数据[docker-compose.yml#L89-L95]
- 客户端数据容器(ac-client-data-init):提供游戏地图、场景等必要客户端资源[docker-compose.yml#L130-L143]
所有容器通过专用网络ac-network实现内部通信,确保服务间安全高效的数据交换[docker-compose.yml#L218]。
环境准备与基础配置
前置依赖
部署前需确保系统已安装:
- Docker Engine (20.10+)
- Docker Compose (v2+)
- Git
官方推荐通过Docker Desktop获取完整工具链,Linux用户可通过发行版包管理器安装。
获取项目代码
git clone https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk.git
cd azerothcore-wotlk
核心配置文件解析
docker-compose.yml是整个部署的核心,定义了所有服务的配置参数与依赖关系:
# 关键服务定义示例(完整配置见[docker-compose.yml](https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk/blob/c13492fb31bbbb35bebc96eb69f8c78581e4628f/docker-compose.yml?utm_source=gitcode_repo_files))
services:
ac-worldserver:
image: acore/ac-wotlk-worldserver:${DOCKER_IMAGE_TAG:-master}
build:
context: .
target: worldserver
dockerfile: apps/docker/Dockerfile # 构建配置
environment:
AC_WORLD_DATABASE_INFO: "ac-database;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_world"
ports:
- ${DOCKER_WORLD_EXTERNAL_PORT:-8085}:8085 # 游戏通信端口
- ${DOCKER_SOAP_EXTERNAL_PORT:-7878}:7878 # 管理接口端口
volumes:
- ${DOCKER_VOL_DATA:-ac-client-data}:/azerothcore/env/dist/data/:ro # 只读客户端数据
depends_on:
ac-database:
condition: service_healthy # 依赖健康的数据库服务
ac-db-import:
condition: service_completed_successfully # 等待数据库初始化完成
环境变量配置:可通过创建.env文件自定义关键参数,如数据库密码、端口映射等:
# 示例.env文件内容
DOCKER_DB_ROOT_PASSWORD=your_secure_password
DOCKER_AUTH_EXTERNAL_PORT=3724
DOCKER_WORLD_EXTERNAL_PORT=8085
DOCKER_USER_ID=1000
DOCKER_GROUP_ID=1000
构建与启动流程
构建容器镜像
# 构建所有服务镜像
docker compose build
# 可选:构建并后台启动服务(首次运行推荐)
docker compose up -d --build
首次构建将耗时较长(15-30分钟,取决于网络和硬件),Docker会缓存构建结果,后续构建将显著加快。构建过程通过apps/docker/Dockerfile定义,采用多阶段构建优化最终镜像大小。
初始化管理账号
服务启动后,需为世界服务器创建管理员账号:
# 连接到世界服务器容器
docker compose attach ac-worldserver
# 在AC控制台执行账号创建命令
AC> account create admin your_password 3 -1
# 参数说明:3=管理员权限等级,-1=永久有效期
注意:执行命令后按
Ctrl+P+Q可退出容器而不终止服务
核心容器配置详解
数据库服务配置
ac-database容器采用官方MySQL 8.4镜像,关键配置:
services:
ac-database:
image: mysql:8.4
ports:
- ${DOCKER_DB_EXTERNAL_PORT:-3306}:3306 # 可选暴露数据库端口
environment:
MYSQL_ROOT_PASSWORD: ${DOCKER_DB_ROOT_PASSWORD:-password}
volumes:
- type: volume
source: ac-database # 命名卷持久化数据
target: /var/lib/mysql
healthcheck:
test: "/usr/bin/mysql --user=root --password=$$MYSQL_ROOT_PASSWORD --execute \"SHOW DATABASES;\""
interval: 5s
timeout: 10s
retries: 40 # 最多重试40次(200秒)等待数据库就绪
游戏世界服务优化
ac-worldserver作为核心服务,可通过环境变量和配置文件调整性能:
environment:
# 数据库连接信息
AC_WORLD_DATABASE_INFO: "ac-database;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_world"
# 日志配置
AC_LOGS_DIR: "/azerothcore/env/dist/logs"
volumes:
# 客户端数据卷(只读)
- ${DOCKER_VOL_DATA:-ac-client-data}:/azerothcore/env/dist/data/:ro
# 日志目录(启用delegated优化OSX文件系统性能)
- ${DOCKER_VOL_LOGS:-./env/dist/logs}:/azerothcore/env/dist/logs:delegated
详细配置可通过修改env/dist/etc/worldserver.conf调整,配置模板位于conf目录。
服务监控与维护
容器状态管理
# 查看所有服务状态
docker compose ps
# 查看服务日志
docker compose logs -f ac-worldserver # 实时查看世界服务器日志
docker compose logs -f ac-authserver # 查看认证服务日志
# 重启特定服务
docker compose restart ac-worldserver
# 停止所有服务(保留数据)
docker compose down
# 停止并删除数据卷(彻底重置)
docker compose down -v
数据备份策略
数据库数据通过Docker卷持久化,建议定期备份:
# 备份数据库到本地文件
docker compose exec ac-database mysqldump -u root -p$DOCKER_DB_ROOT_PASSWORD --all-databases > backup_$(date +%Y%m%d).sql
客户端数据存储在命名卷ac-client-data中,可通过以下命令导出:
# 导出客户端数据卷
docker run --rm -v ac-client-data:/source -v $(pwd):/backup alpine tar -czf /backup/client-data.tar.gz -C /source .
高级配置与优化
开发环境支持
项目提供开发专用容器配置,适合代码修改与调试:
# 启动开发环境(包含完整源码和编译工具)
docker compose --profile dev up -d
开发容器将本地代码目录挂载到容器内,支持实时编译与测试,详细配置见docker-compose.yml#L164-L205。
自定义模块部署
AzerothCore支持模块化扩展,可通过以下步骤添加自定义模块:
- 将模块代码放入modules目录
- 修改docker-compose.yml添加模块构建参数
- 重新构建并启动服务:
docker compose up -d --build
模块开发指南详见how_to_make_a_module.md。
常见问题排查
容器启动失败
- 数据库连接问题:检查ac-database容器健康状态,通过
docker compose logs ac-database查看错误信息 - 权限问题:确保本地目录权限正确,可通过以下命令修复:
sudo chown -R $(id -u):$(id -g) env/dist/etc env/dist/logs - 端口冲突:修改.env文件中的端口映射参数,如
DOCKER_AUTH_EXTERNAL_PORT=3725
客户端数据缺失
若世界服务器启动时报错"Map file not found",通常是客户端数据未正确初始化:
# 手动触发客户端数据下载
docker compose run --rm ac-client-data-init
数据初始化脚本位于apps/installer/includes/functions.sh中的inst_download_client_data函数。
性能优化建议
- 启用ccache:加速重复构建,配置见var/ccache目录
- 调整数据库参数:通过修改my.cnf优化MySQL性能
- 资源限制:在docker-compose.yml中为服务添加资源限制:
deploy: resources: limits: cpus: '4' memory: 8G
总结与展望
通过Docker Compose部署AzerothCore-WoTLK,我们实现了:
- ✅ 环境一致性:消除"在我机器上能运行"的问题
- ✅ 服务隔离:各组件独立运行,互不干扰
- ✅ 一键部署:简化复杂环境配置
- ✅ 灵活扩展:支持开发、测试、生产多环境切换
未来版本将进一步优化容器启动速度,并增加监控面板集成,让服务器管理更加便捷。如需深入学习,可参考以下资源:
- 官方Docker文档:apps/docker/README.md
- 完整部署指南:AzerothCore Wiki
- 配置文件模板:conf
希望本文能帮助你顺利搭建自己的AzerothCore服务器,享受魔兽世界私人服务器的乐趣!如有问题,欢迎在项目Issue中交流反馈。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin08
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00