コード(スクリプト)、モジュール、データベース(追加されたクエスト、ベンダー、アイテム)の両方をカスタマイズしてDockerAzerothcoreを適切に更新する方法
Dockerコンテナ内でAzerothcore-WOLTKを実行しています。重要なセキュリティ修正があると読んだので、サーバーを更新したいと思います。
ただし、昨年(2019年12月)に最初にサーバーをインストールして以来、サーバーを更新したことはありません。それ以来、私はいくつかの方法でサーバーをカスタマイズしてきました。
- 2人のプレイヤーで正しく動作するように、いくつかのボススクリプトをカスタマイズしました。
- いくつかのモジュールをインストールしました。その中には、追加のコードをコンパイルしたり、SQLクエリを実行したりする必要があるモジュールも含まれています。
- 自分でデータベースを変更し、クエスト、NPC、ベンダー、アイテムを追加しました
そういうわけで、私は私がすべてを台無しにしてしまうことになるのではないかと非常に心配しています。私が実行したすべてのカスタマイズを維持しながら、サーバーを最新バージョンに更新する方法について、あなたの支援が必要です。
更新されたボススクリプトをバックアップし、git pullを実行して、ビルドする前にそれらを再度置き換えることができると考えているため、データベースの変更について特に心配しています(後でフォークを実行する必要がありますが、それについては考えていませんでした)...しかしいずれにせよ、私がDockerインストールを使用していることを考えると、途中で段階的にガイドしていただければ非常にありがたいです。
データベースに関連するものはすべてHeidiSQLを使用しているので、どのデータベースプロシージャにも使用できます。私はSQLクエリにあまり精通していませんが、必要に応じて.sqlファイルをインポートできるはずです。
たくさん質問していることに気づきましたので、すぐに答えるプレッシャーを感じないでください。機会があればいつでも手伝っていただければ幸いです。
お時間をいただきありがとうございます:)
回答
私はあなたが言及したすべての点に答えようとします:
1.ボススクリプト。
発生する可能性のある最悪の事態は、を使用して最新の変更をプルしているときにマージの競合が発生することですgit
。したがって、手動で解決する必要があります。特にあなたの場合、それは必ずしも難しいことではありません。これは単なるボススクリプトであるため、本質的に完全に自己完結型であり、それらをいじるときに他のものを壊すことはありません。
2.モジュール
モジュールはまったく問題にならないはずです。モジュールはまさにこの理由で存在します。コアなどを更新する場合に分離され、問題を引き起こさないということです。
ここでの私の唯一の懸念は、コアの変更が必要なモジュールです。インストールしたモジュールがわかりません。通常、これは発生しないはずです。適切なAzerothCoreモジュールでは、コアを変更する必要はありません。ただし、繰り返しになりますが、発生する可能性のある最悪の事態は、いくつかのgitマージの競合であり、大きすぎることはないと思います(モジュールに必要なこれらの変更がどれほど大きく、侵襲的であったかによって異なります)。
3.カスタムデータベースの変更。
黄金律は、カスタムSQLクエリを常にどこかに保存し、簡単に再適用できるようにすることです。たとえば、常にDELETE
前INSERT
に使用し、UPDATE
可能な場合は優先します。
したがって、必要なのは、行ったカスタム変更に対応するすべてのSQLコードを含むファイル(またはファイルの束)だけです。持っていない場合でも、DBから抽出できます。
その後、必要に応じて、コアを更新した後、いつでも再適用できます。また、再適用する必要がまったくない場合もあります。または、新しいAzerothCoreワールドデータベースから開始して、変更を再適用することもできます。これは実際には特定のケースによって異なりますが、とにかく問題はありません(SQLファイルで変更を保持している限り)。
Keira3を使用してデータベースを編集するか、必要に応じて変更を抽出することができます。たとえば、エンティティを開いてその「完全なクエリ」をコピーできます。
最初にバックアップする
アップグレード手順を開始する前に、次のバックアップを作成してください。
- あなたのDB
- 変更したソースファイル(ボスなど)
頻繁に更新してください!
ただし、昨年(2019年12月)に最初にサーバーをインストールして以来、サーバーを更新したことはありません。
これはまったくお勧めできません!AzerothCoreを頻繁に(少なくとも週に1回)更新することになっています。そうする理由はたくさんありますが、その1つは、頻繁に行う方がはるかに簡単であるということです。
Docker使用時にAzerothCoreを更新する方法
Dockerを使用したACの更新に関する一般的な質問は、すでにここで尋ねられています:azerothcore-wotlkdockerコンテナーを更新する方法