AlexON Posted October 16 Posted October 16 (edited) Bonjour a tous, J'aimerais partager avec vous un Docker pour m'aider à le finaliser, car, franchement, je sèche un peu. C'est mon premier Docker. En fait, j’apprends tout simplement. Avec l'aide de ChatGPT pour comprendre l'ensemble, et beaucoup d'essais et d'erreurs, j'ai presque réussi à faire avancer ce projet. Ce Docker doit faire fonctionner un serveur de jeu FINAL FANTASY XI. L'équipe qui le propose n'a jamais réalisé de version Docker, et comme je m’intéresse de plus en plus à cette technologie, j'ai décidé de l'adapter en Docker pour ma propre utilisation. Il est possible que je modifie une multitude de fois mon message au fur et a mesure que j'avance. Désolé de inconvénient. ÉDIT: Enfin de compte, ma question original se transforme pratiquement en tutorial lol. Il me reste juste a comprendre comment executer automatiquement les 4 exécutables au démarrage et a chaque redémarrage aussi du docker. Ainsi que quelques petits réglages autour de MariaDB. Si vous continuez a lire, vous allez vite comprendre de quoi je parle. Bien entendu, si j'ai pas réactualisé la solution et que vous la connaissez, SVP laisser le moi savoir, ça serai apprécié. Le Docker s'exécute sans problème. Je retrouve Vanadiel_XI/build et Vanadiel_XI avec les exécutables suivants : Quote xi_connect, xi_map, xi_search et xi_world dans le conteneur ffxi_app_1. Le conteneur ffxi_db-1 est supposé être la base de donnée MariaDB. Pour peupler la base de données, il est proposé d'utiliser un script en Python. Une petite modification doit être fait manuellement dans le répertoire Vanadiel_XI/settings/network.lua pour pouvoir communiquer avec la base de donnée MariaDB. Pour plus de convivialité, la configuration de MariaDB (nom de la base de donnée, mot de passe, etc.), le mieux serait de passer par un formulaire que UnRAID propose, mais je n'ai aucune idée de comment cela doit s'organiser et si d'ailleurs, techniquement, si c'est réalisable. Pour peupler la base de donnée MariaDB, j'ai trouvé une manière manuelle pour le faire. Il suffit d'inscrire l'adresse IP du docker ffxi_db-1 (j'ai du aller la chercher directement dans le docker avec la commande Quote ip a ). Le mieux est que dans la section docker d'UnRAID, l'IP s'affiche ou encore mieux, lors de la configuration initiale du docker via une page UnRAID peut-être? Ensuite, de retour dans notre docker ffxi_app_1 et on va modifier dans Quote Vanadiel_XI/settings/network.lua l'adresse IP 127.0.0.1 par l'IP du docker ffxi_db-1. Et aller dans Quote Vanadiel_XI/tools et aller exécuter la commande Quote python3 dbtool.py pour faire afficher le menu et peupler la base de donnée. Il existe surement une manière plus simple de tout faire ça de manière automatisé. Si vous savez comment, je vous invite a améliorer le docker. Ce qui resterait a faire. - Exécuter automatiquement a chaque démarrage du docker les exécutables: xi_connect, xi_map, xi_search et xi_world EDIT: la je cherche encore. J’espère avoir été assez clair. De toute manière, si vous avez des questions, suffit de les poser. Merci a tous! Je vous partage mes fichiers docker-compose et Dockerfile. services: app: image: ubuntu:jammy build: context: /mnt/user/docker-compose/ffxi/ dockerfile: /mnt/user/docker-compose/ffxi/ffxi.Dockerfile volumes: - ./server:/VanadielXI # Monte un volume local dans /server ports: - "8080:80" # Ajuste les ports selon tes besoins tty: true # Pour garder le terminal ouvert depends_on: - db # Assure que la base de données soit lancée avant l'app db: image: mariadb:latest environment: MYSQL_ROOT_PASSWORD: YourRootPassword # Définit le mot de passe root de MariaDB MYSQL_DATABASE: xidb # Optionnel : nom de la base de données MYSQL_USER: xi # Nom de l'utilisateur MYSQL_PASSWORD: YourPassword # Mot de passe pour l'utilisateur volumes: - db_data:/var/lib/mysql # Persiste les données de la base de données volumes: db_data: # Définit un volume pour la base de données # Utiliser l'image de base Ubuntu Jammy FROM ubuntu:jammy # Mettre à jour les paquets et installer des dépendances RUN apt-get update && apt-get install -y \ git \ nano \ python3 \ python3-pip \ g++-10 \ cmake \ make \ libluajit-5.1-dev \ libzmq3-dev \ libssl-dev \ zlib1g-dev \ mariadb-server \ libmariadb-dev \ binutils \ binutils-dev \ && rm -rf /var/lib/apt/lists/* # Nettoyer les fichiers temporaires # Définir le répertoire de travail WORKDIR /Vanadiel_XI # Cloner le dépôt avec les sous-modules RUN git clone --recursive https://github.com/AlexandreCA/Vanadiel_XI.git # Installer les dépendances Python WORKDIR /Vanadiel_XI RUN pip3 install -r Vanadiel_XI/tools/requirements.txt # Copier les fichiers de configuration par défaut RUN cp Vanadiel_XI/settings/default/* Vanadiel_XI/settings/ # Créer le répertoire de build RUN mkdir build # Changer de répertoire et compiler le projet WORKDIR Vanadiel_XI/build RUN cmake .. && make -j$(nproc) # Exposer le port 80 (ou un autre si nécessaire) EXPOSE 80 # Commande à exécuter lorsque le conteneur démarre CMD ["bash"] le Github du projet se situe ici --» https://github.com/AlexandreCA/Vanadiel_XI/tree/base onglet "docker version" et le WIKI pour comprendre comment le projet fonctionne --» https://github.com/LandSandBoat/server/wiki/Quick-Start-Guide Edited October 17 by AlexON correction des explications Quote
hot22shot Posted October 29 Posted October 29 Salut, J'avoue j'ai lu en diagonale le sujet (FFXI c'est pas ma came 😁), mais : Quote Ce qui resterait a faire. - Exécuter automatiquement a chaque démarrage du docker les exécutables: Tu peux essayer avec la balise command, par exemple : services: monapp: command: sh -c "commande1 && commande2 && commande2" A adapter en fonction de tes exécutables et de leurs emplacements. Tu peux trouver plus d'exemple en recherchant "docker compose execute multiple commands" sur google. Quote
AlexON Posted October 31 Author Posted October 31 (edited) Merci, j'avoue que j'ai rebâtie mon serveur sur une VM pour me simplifier la vie malgré que ça soit pas mon objectif initiale. Ça ma vite soulé avec 4 jours de recherche et d'essai. Edited October 31 by AlexON Quote
hot22shot Posted November 1 Posted November 1 C'est aussi une solution ! La VM, par contre, ça consomme plus de ressources. Pour la prochaine fois demande à chatgpt, c'est bête mais ça marche pour te faire expliquer des trucs comme ça. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.