Skip to content

Configuration docker 🐳 pour déployer l'application Rafa (référentiel des annuaires fonctionnels de l'Abes).

Notifications You must be signed in to change notification settings

abes-esr/rafa-docker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rafa-docker

Configuration docker 🐳 pour déployer l'application Rafa (référentiel des annuaires fonctionnels de l'Abes).

image

Le code source (non opensource car vieux code) de rafa est accessible ici :
https://git.abes.fr/depots/Rafa/

URLs de rafa

Les URLs correspondantes aux déploiements en local, test et prod de rafa sont les suivantes :

Prérequis

Disposer de :

  • docker
  • docker compose

Installation

Déployer la configuration docker dans un répertoire :

# adaptez /opt/pod/ avec l'emplacement où vous souhaitez déployer l'application
cd /opt/pod/
git clone https://github.com/abes-esr/rafa-docker.git

cd /opt/pod/rafa-docker/
mkdir -p images/
git clone https://git.abes.fr/depots/Rafa.git ./images/Rafa/

Configurer l'application depuis l'exemple du fichier .env-dist (ce fichier contient la liste des variables avec des explications et des exemples de valeurs) :

cd /opt/pod/rafa-docker/
cp .env-dist .env
# personnaliser alors le contenu du .env

Initialisation de la base de données en partant du dump d'une sauvegarde, par exemple rafa-db-2023-09-07.dmp qu'il faut préalablement déposer dans le répertoire /opt/pod/rafa-docker/volumes/rafa-db/backup/ :

cd /opt/pod/rafa-docker/
chmod 777 -R ./volumes/rafa-db/oradata/ ./volumes/rafa-db/backup/ ./volumes/rafa-db/setup-scripts/
docker compose up -d rafa-db rafa-db-dumper # a noter que le premier démarrage peut prendre jusque à 10 minutes
docker exec -it rafa-db-dumper bash
impdp system/$ORACLE_DB_DUMPER_ORACLE_PWD@//$ORACLE_DB_DUMPER_HOST:$ORACLE_DB_DUMPER_PORT/FREE \
      schemas=$ORACLE_DB_DUMPER_ORACLE_SCHEMA_TO_BACKUP \
      TABLE_EXISTS_ACTION=REPLACE \
      directory=BACKUP_DIR \
      dumpfile=rafa-db-2023-09-07.dmp logfile=rafa-db-2023-09-07.impdp.log

Au final on peut démarrer le reste de l'application comme ceci :

cd /opt/pod/rafa-docker/
docker compose up --build -d

Démarrage et arrêt

# pour démarrer l'application (ou pour appliquer des modifications 
# faites dans /opt/pod/rafa-docker/.env)
cd /opt/pod/rafa-docker/
docker compose up -d

Remarque : retirer le -d pour voir passer les logs dans le terminal et utiliser alors CTRL+C pour stopper l'application

# pour stopper l'application
cd /opt/pod/rafa-docker/
docker compose stop


# pour redémarrer l'application
cd /opt/pod/rafa-docker/
docker compose stop
docker compose start

Point d'attention : éviter d'utiliser la commande docker compose restart car cette dernière ne respecte pas la directive depends_on de rafa-web et cela provoquera une erreur 404 temporaire au démarrage du conteneur rafa-web car son WAR n'arrivera pas à se déployer du fait que rafa-db n'est pas encore démarré. Cette erreur 404 sera temporaire car un système automatique de redémarrage du conteneur rafa-web a été mise en place à partir du 23/02/2024.

Supervision

# pour visualiser les logs de l'appli
cd /opt/pod/rafa-docker/
docker compose logs -f --tail=100

Cela va afficher les 100 dernière lignes de logs générées par l'application et toutes les suivantes jusqu'au CTRL+C qui stoppera l'affichage temps réel des logs.

Configuration

Pour configurer l'application, vous devez créer et personnaliser un fichier /opt/pod/rafa-docker/.env (cf section Installation). Les paramètres à placer dans ce fichier .env et des exemples de valeurs sont indiqués dans le fichier .env-dist

Sauvegardes

Les éléments suivants sont à sauvegarder:

  • /opt/pod/rafa-docker/.env : contient la configuration spécifique de notre déploiement
  • la base de données oracle de Rafa dont les dumps sont periodiquement et automatiquement générés dans le répertoire /opt/pod/rafa-docker/volumes/rafa-db/backup/

Restauration depuis une sauvegarde

Réinstallez l'application rafa depuis la procédure d'installation ci-dessus et récupéré depuis les sauvegardes le fichier .env et placez le dans /opt/pod/rafa-docker/.env sur la machine qui doit faire repartir rafa.

Restaurez ensuite la dernière version de la base de données oracle de rafa comme ceci :

  • localiser ou bien déposer le fichier à restaurer dans le répertoire /opt/pod/rafa-docker/volumes/rafa-db/backup/, exemple :
    -rw-rw----+ 1                54321 [email protected] 8376320 Dec  3 05:52 rafa-db-2023-12-03.dmp
    -rw-rw----+ 1                54321 [email protected]    5617 Dec  3 05:52 rafa-db-2023-12-03.log
    -rw-rw----+ 1                54321 [email protected] 8376320 Dec  4 05:52 rafa-db-2023-12-04.dmp
    -rw-rw----+ 1                54321 [email protected]     436 Dec  4 09:51 rafa-db-2023-12-04.log
    
  • s'assurer que les conteneurs rafa-db et rafa-db-dumper sont démarrés :
    docker compose up rafa-db rafa-db-dumper -d
    
  • entrer dans le conteneur, identifiez le dump à restaurer et régler éventuellement ses droits (l'outil de restauration est très sensible aux droits positionnés sur le fichier dmp) :
    docker exec -it rafa-db-dumper bash
    chown oracle /backup/rafa-db-2024-06-15.dmp
    chmod 660 /backup/rafa-db-2024-06-15.dmp
    
  • lancer la commandes suivantes (en remplaçant le nom du fichier) :
    impdp system/$ORACLE_DB_DUMPER_ORACLE_PWD@//$ORACLE_DB_DUMPER_HOST:$ORACLE_DB_DUMPER_PORT/FREE \
          schemas=$ORACLE_DB_DUMPER_ORACLE_SCHEMA_TO_BACKUP \
          TABLE_EXISTS_ACTION=REPLACE \
          directory=BACKUP_DIR \
          dumpfile=rafa-db-2023-06-15.dmp \
          logfile=rafa-db-2023-06-15.impdp.log

Lancez alors toute l'application rafa et vérifiez qu'elle fonctionne bien :

cd /opt/pod/rafa-docker/
docker compose up -d

Vider complètement la base de données

Il peut être utile de recharger depuis zéro la base de données dans le cadre d'une restauration. Pöur cela il est recommandé de nettoyer complètement la base de données en supprimant totalement le répertoire où Oracle stock ses données.

Voici comment procéder :

cd /opt/pod/rafa-docker/
docker compose down rafa-db rafa-db-dumper
rm -rf /opt/pod/rafa-docker/volumes/rafa-db/oradata/
git checkout /opt/pod/rafa-docker/volumes/rafa-db/oradata/
chmod -R 777 /opt/pod/rafa-docker/volumes/rafa-db/oradata/

Procédures d'exploitations

Mise à jour du code source de Rafa

TLDR : une procédure à copier coller est dispo dans la section juste après

Dans le cas où une nouvelle version de Rafa est à déployer, son code source aura été mis à jour ici : https://git.abes.fr/depots/Rafa

Il est alors nécessaire de mettre à jour le code source de Rafa dans le répertoire /opt/pod/rafa-docker/images/Rafa/ et de le caler sur la version cible (exemple: 1.18.19) :

cd /opt/pod/rafa-docker/images/Rafa/
git pull origin 1.18.19

Ensuite de mettre en cohérence ce n° de version dans la variable RAFA_VERSION dans le fichier /opt/pod/rafa-docker/.env :

cd /opt/pod/rafa-docker/
sed -i 's#^RAFA_VERSION=.*$#RAFA_VERSION=1.18.19#g' /opt/pod/rafa-docker/.env

Puis de rebuilder les images et de redéployer les conteneurs dans cette nouvelle version :

cd /opt/pod/rafa-docker/
docker compose up --build -d

Mise à jour et déploiement automatique vers la dernière version de Rafa

Le script suivant fait tout le travail au dessus en une seule opération en se callant sur la dernière release trouvée :

cd /opt/pod/rafa-docker/images/Rafa/
git pull 
RAFA_LAST_VERSION=$(git describe --tags --abbrev=0)
git checkout $RAFA_LAST_VERSION
cd /opt/pod/rafa-docker/
sed -i "s#^RAFA_VERSION=.*\$#RAFA_VERSION=$RAFA_LAST_VERSION#g" /opt/pod/rafa-docker/.env
docker compose up --build -d

Copier les données d'une instance de Rafa vers une autre

Pour cela on peut utiliser l'outil SQL developer et utiliser sa fonctionnalité Copie de base de données : image

image

Remarque : la copie des données de Rafa entre un Oracle 12c et un Oracle 23.2 fonctionne.

Régler le mot de passe ORACLE si il expire

Une erreur rencontrée le 13/11/2024 était liée au mot de passe d'ORACLE qui avait expiré et qui empêchait le conteneur rafa-db-dumper de fonctionner. Ce bug était lié au réglage initial du mot de passe SYSTEM qui était réglé avec une expiration. Voici les commandes passées pour désactiver l'expiration du mot de passe SYSTEM (remplacer "xxxxxxxxxxxxx" par le mot de passe venant de la variable RAFA_DB_ORACLE_PWD) :

# rentrer dans le conteneur
docker exec -it rafa-db bash

# lancer le client sql d'oracle, visualiser les mdp expirés et régler les expirations des mots de passes
sqlplus /nolog
connect / as SYSDBA
SELECT username, account_status FROM dba_users WHERE ACCOUNT_STATUS LIKE '%EXPIRED%';
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
alter user SYSTEM identified by xxxxxxxxxxxxx account unlock;
commit;

Autres procédures

Ci-dessous le lien vers notre documentation interne permettant de débloquer certaines situation non prévue dans les fonctionnalités de Rafa (ex: administrer les rôles).

About

Configuration docker 🐳 pour déployer l'application Rafa (référentiel des annuaires fonctionnels de l'Abes).

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages