Comment mettre à jour correctement Docker Azerothcore avec des personnalisations à la fois du code (scripts), des modules et de la base de données (quêtes, fournisseurs, objets ajoutés)
J'exécute Azerothcore-WOLTK dans un conteneur Docker. Je voudrais mettre à jour le serveur car j'ai lu qu'il y avait un correctif de sécurité important.
Cependant, je n'ai jamais mis à jour le serveur depuis que je l'ai installé pour la première fois l'année dernière (décembre 2019). Depuis, j'ai personnalisé le serveur de plusieurs manières:
- J'ai personnalisé quelques scripts de boss pour qu'ils fonctionnent correctement avec deux joueurs.
- J'ai installé quelques modules, dont un qui nécessitait également un code supplémentaire à compiler et des requêtes SQL à exécuter.
- J'ai moi-même modifié la base de données en ajoutant des quêtes, des PNJ, des vendeurs et des objets
En tant que tel, je suis extrêmement inquiet de finir par tout gâcher. J'aurais besoin de votre aide sur la façon de procéder pour mettre à jour le serveur vers la dernière version tout en conservant toutes les personnalisations que j'ai effectuées.
Je suis particulièrement préoccupé par les changements de base de données car je pense que je pourrais sauvegarder les scripts de boss mis à jour, faire un git pull et les remplacer à nouveau avant de construire (je devrais faire un fork après, je n'y ai pas pensé) ... Mais dans tous les cas, je serais extrêmement reconnaissant si vous pouviez me guider étape par étape tout au long du processus, étant donné que j'utilise une installation docker.
Pour tout ce qui concerne la base de données, j'utilise Heidi SQL, je peux donc l'utiliser pour n'importe quelle procédure de base de données. Je ne suis pas très compétent dans les requêtes SQL, mais je devrais être capable d'importer des fichiers .sql si nécessaire.
Je me rends compte que je demande beaucoup, alors ne vous sentez pas obligé de répondre tout de suite. Je serai très reconnaissant si vous pouviez m'aider chaque fois que vous en aurez l'occasion.
Merci pour votre temps :)
Réponses
Je vais essayer de répondre à tous les points que vous avez mentionnés:
1. Les scripts de boss.
La pire chose qui puisse arriver est que vous obtenez des conflits de fusion lors de l'extraction des dernières modifications à l'aide de git
. Vous devrez donc les résoudre manuellement. Ce n'est pas forcément difficile, surtout dans votre cas. Ce ne sont que des scripts de boss, donc par nature, ils sont assez autonomes et vous êtes sûr de ne rien casser lorsque vous les manipulez.
2. Modules
Les modules ne devraient pas du tout poser de problème. Les modules existent exactement pour cette raison: être isolés et ne pas poser de problèmes en cas de mise à jour du noyau ou similaire.
Ma seule préoccupation ici serait ce module qui nécessitait un changement de base. Je ne sais pas quel module vous avez installé, normalement cela ne devrait pas arriver. Un module AzerothCore approprié ne devrait pas nécessiter de changement de noyau. Cependant, encore une fois, la pire chose que vous puissiez avoir est des conflits de fusion git, rien de trop gros j'espère (cela dépend de l'ampleur et de l'invasion de ces changements requis par le module).
3. Modifications personnalisées de la base de données.
La règle d'or est la suivante: stockez toujours vos requêtes SQL personnalisées quelque part, de manière à pouvoir les réappliquer facilement. Par exemple, utilisez toujours DELETE
avant INSERT
, préférez UPDATE
quand c'est possible, etc ...
Il vous suffit donc d'avoir un fichier (ou un ensemble de fichiers) contenant tout votre code SQL correspondant aux modifications personnalisées que vous avez apportées. Si vous ne l'avez pas, vous pouvez toujours l'extraire de votre base de données.
Ensuite, vous pouvez toujours les réappliquer après avoir mis à jour votre noyau, si vous le jugez nécessaire. Il se peut également que vous n'ayez pas du tout besoin de les réappliquer. Ou peut-être souhaitez-vous partir d'une nouvelle base de données mondiale AzerothCore et réappliquer vos modifications. Cela dépend vraiment du cas spécifique, mais de toute façon tout ira bien (tant que vous gardez vos modifications dans les fichiers SQL).
Vous pouvez utiliser Keira3 pour éditer votre base de données ou simplement extraire vos modifications au cas où vous en auriez besoin. Par exemple, vous pouvez ouvrir une entité et copier sa "requête complète".
Sauvegarder d'abord
Avant de démarrer la procédure de mise à niveau, créez une sauvegarde de:
- votre DB
- les fichiers sources que vous avez modifiés (ex: boss, etc ...)
Mettez à jour fréquemment!
Cependant, je n'ai jamais mis à jour le serveur depuis que je l'ai installé pour la première fois l'année dernière (décembre 2019).
Ce n'est pas du tout recommandé! Vous êtes censé mettre à jour votre AzerothCore fréquemment (au moins une fois par semaine). Il y a beaucoup de bonnes raisons de le faire, l'une d'elles est la suivante: c'est beaucoup plus facile si vous le faites souvent.
Comment mettre à jour AzerothCore lors de l'utilisation de Docker
Une question générique sur la mise à jour d'AC avec Docker a déjà été posée ici: Comment mettre à jour le conteneur docker azerothcore-wotlk