Jump to content

Petite aide sur la création d'un docker FFXI.


Recommended Posts

Posted (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 by AlexON
correction des explications
  • AlexON changed the title to Petite aide sur la création d'un docker FFXI.
  • 2 weeks later...
Posted

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.

 

Posted (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 by AlexON
Posted

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.

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...