首页 > 解决方案 > 如何通过对代码(脚本)、模块和数据库(添加的任务、供应商、项目)的自定义来正确更新 Docker Azerothcore

问题描述

我在 Docker 容器中运行 Azerothcore-WOLTK。我想更新服务器,因为我读到有一个重要的安全修复程序。

但是,自从我去年(2019 年 12 月)首次安装服务器以来,我从未更新过服务器。从那时起,我以几种方式定制了服务器:

  1. 我已经定制了一些老板脚本以与两个玩家一起正常工作。
  2. 我已经安装了一些模块,包括一个还需要编译一些额外代码和运行一些 SQL 查询的模块。
  3. 我自己修改了数据库,添加了任务、NPC、供应商和物品

因此,我非常担心我最终会搞砸一切。我需要您的帮助,了解如何继续将服务器更新到最新版本,同时保持我执行的所有自定义。

我特别担心数据库更改,因为我认为我可以备份更新的老板脚本,执行 git pull 并在构建之前再次替换它们(之后我应该做一个 fork,我没有考虑过)......但是无论如何,如果您能逐步指导我,我将非常感激,考虑到我正在使用 docker 安装。

对于任何与数据库相关的东西,我都使用 Heidi SQL,所以我可以将它用于任何数据库过程。我对 SQL 查询不是很精通,但我应该能够根据需要导入 .sql 文件。

我知道我问了很多,所以请不要有压力马上回答。如果您有机会能帮助我,我将不胜感激。

感谢您的时间 :)

标签: mysqldockerazerothcore

解决方案


我会尽量回答你提到的所有观点:

1.老板脚本。

可能发生的最糟糕的事情是您在使用git. 所以你必须手动解决它们。这不一定很难,尤其是在您的情况下。这只是老板脚本,所以从本质上讲,它们是非常独立的,当你弄乱它们时,你肯定不会破坏其他任何东西。

2. 模块

模块根本不应该是一个问题。模块正是因为这个原因而存在:被隔离并且在更新核心或类似的情况下不会引起问题。

我唯一关心的是需要核心更改的模块。我不知道你安装了什么模块,通常这不应该发生。一个合适的艾泽拉斯核心模块应该不需要任何核心变化。然而,再一次,你可能遇到的最糟糕的事情是一些 git 合并冲突,我希望没有太大的事情(取决于模块所需的这些更改有多大和侵入性)。

3.自定义数据库更改。

黄金法则是:始终将您的自定义 SQL 查询存储在某个地方,以便可以轻松地重新应用它们。例如,总是使用DELETEbefore INSERT,如果可能,更喜欢UPDATE等等......

因此,您只需要一个文件(或一堆文件),其中包含与您所做的自定义更改相对应的所有 SQL 代码。如果你没有它,你仍然可以从你的数据库中提取它。

然后,如果您觉得需要,您可以在更新核心后随时重新应用它们。也可能是您根本不需要重新应用它们。或者,也许您想从一个全新的 AzerothCore 世界数据库开始并重新应用您的更改。这实际上取决于具体情况,但无论如何您都会没事的(只要您将更改保存在 SQL 文件中)。

您可以使用Keira3来编辑您的数据库,或者在需要时提取您的更改。例如,您可以打开一个实体并复制其“完整查询”。

先备份

在开始升级过程之前,请创建以下备份:

  • 你的数据库
  • 您修改过的源文件(例如老板等...)

经常更新!

但是,自从我去年(2019 年 12 月)首次安装服务器以来,我从未更新过服务器。

根本不建议这样做!你应该经常更新你的艾泽拉斯核心(至少每周一次)。这样做有很多很好的理由,其中之一是:如果你经常这样做会更容易。

使用 Docker 时如何更新 AzerothCore

关于使用 Docker 更新 AC 的一般问题已经在这里提出:如何更新 azerothcore-wotlk docker 容器


推荐阅读