Skip to content

Script de déploiement Docker packagé de GeoNature et ses dépendances

License

Notifications You must be signed in to change notification settings

dbwildlife/GeoNature-docker

 
 

Repository files navigation

GeoNature-docker

Utilisation de Docker pour le déploiement de GeoNature dans le cadre d'un hébergement mutualisé (plusieurs instances GeoNature hébergées par sur un serveur commun).

Contributeurs

Ce portage de GeoNature sous Docker a été réalisé par le BRGM dans le cadre de la convention BRGM/OFB.

Projets liés

Applications

Autres composants

Architecture

  graph TD
    classDef label stroke-width:0;
    classDef node fill:white,stroke:black;
    nginx(nginX);
    pgadmin(PGAdmin);
    app(Geonature App);
    db(Geonature DB);
    nginx -- 80 --> pgadmin
    nginx -- "5000 (GeoNature)" --> app
    nginx -- "5001 (UsersHub)" --> app
    nginx -- "5002 (TaxHUb)" --> app
    nginx -- "8080 (Atlas)" --> app
    pgadmin -- 5432 --> db
    app -- 5432 --> db
Loading

Installation

Prérequis/Informations initiales

Dépendances

Ce projet nécessite l'installation préalable de:

Dans notre exemple nous utiliserons un certain nombre d'assertions.

  • Le répertoire /applications est la base de notre environnement de travail.
  • Le répertoire /applications/projets contiendra les différents instances de GeoNature.
  • Le répertoire /applications/geonature contiendra le contenu du dépôt git de GeoNature.
  • Le répertoire /applications/administration contiendra les différents outils d'administration.

Dépôt geonature

  • Dans le dépôt git, la branche à utiliser est main.
  • Dans le dépôt git, les sources sont dans le répertoire racine (celui où est situé ce README.md).

Etapes d'installation

Cloner le dépôt GeoNature-docker sur la machine

mkdir -p /applications

cd /applications

git clone https://github.com/PnX-SI/GeoNature-docker.git geonature

### Actuellement le bon contenu est dans la branche "main", il faut donc se mettre dessus (si vous venez de checkout, ce sera le cas directement).
cd geonature
git checkout main

Construire l'image GeoNature (facultatif)

Cette étape est facultative si l'image peut-être récupérée d'un registre Docker ou bien si le CI/CD du projet est mis en place.

### Dans le répertoire _app__, il faut adapter le nom du tag
docker build --force-rm -t geonature:geonature-verified app/

Créer un répertoire pour le GeoNature que l'on veut déployer, par exemple en spécifiant votre domaine (remplacer <mondomaine.org> par le nom de votre choix).

mkdir -p /applications/projets/<mondomaine.org>

Copier l'environnement

cp /applications/geonature/env.sample /applications/projets/<mondomaine.org>/.env
cp /applications/geonature/docker-compose.yaml /applications/projets/<mondomaine.org>/

Editer l'environnement

vim /applications/projets/<mondomaine.org>/.env

Exemple de configuration (dans cet exemple, une image déjà présente est utilisé, si vous avez construit l'image docker par vous même, indiquez ici son tag):

POSTGRES_DB=geonature
POSTGRES_USER=geonature_user
POSTGRES_PASS=geonature
PGDATA_DIR=/applications/projets/geonature.brgm-rec.fr/pgdata
BOOTSTRAP_DIR=/applications/geonature/bootstrap_files
GEONATURE_COMMON_DIR=/applications/projets/geonature.brgm-rec.fr/geonature_common
GEONATURE_DOMAIN=geonature.brgm-rec.fr
GEONATURE_PROTOCOL=https
GEONATURE_IMAGE=geonature:geonature-verified
NGINX_CONF=/applications/geonature/nginx.conf
HTTP_PROXY=http://someproxy.loc.al:port
PGADMIN_DEFAULT_EMAIL=user@domain.geonature_com
PGADMIN_DEFAULT_PASSWORD=SuperSecret

Créer le réseau permettant de gérer le reverse proxy

docker network create rpx_net

Copier le répertoire nginx-proxy où on veut gérer le proxy

mkdir -p /applications/administration

cp nginx-proxy /applications/administration/nginx-proxy

Installer le service nginx-proxy

Vous pouvez aussi aller lire la documentation dans le répertoire nginx-proxy.

cp /applications/administration/nginx-proxy/nginx-proxy.service /etc/systemd/system
systemctl daemon-reload
systemctl enable nginx-proxy --now

Installer le service geonature

### Copie de l'Unit
cp /applications/geonature/geonature.service /etc/systemd/system/

### Edition de l'Unit (au moins deux parties à modifier ##Geonature##)
vim /etc/systemd/system/geonature.service

### Activation du service
systemctl daemon-reload
systemctl enable geonature --now

Mise à jour de la configuration

Installer un module

L'installation des modules se fait indépendamment dans chacune des instance. Il faut pour cela se connecter terminal du conteneur. Suivez ensuite la démarche habituelle d'installation du module. Ici un exemple avec le module gn_module_dashboard.

docker ps
# On récupère le nom ou le hash du container de geonature pour lancer un exec dessus
docker exec -it <id ou nom de mon conteneur geonature> /bin/bash

mkdir -p /geonature/gn_modules
cd /geonature/gn_modules

# Téléchargement, décompression et configuration du module
wget https://github.com/PnX-SI/gn_module_dashboard/archive/0.2.0.zip 
unzip 0.2.0.zip
mv gn_module_dashboard_0.2.0 gn_module_dashboard

# Finalisation de l'installation du module
# On initialize l'environnement virtuel python de GeoNature
source /geonature/geonature/backend/venv/bin/activate
# On installe le module GeoNature avec la commande : geonature install_gn_module <chemin absolu vers mon module> <url relative du module>
geonature install_gn_module /geonature/gn_modules/gn_module_dashboard dashboard

Changement d'URL de l'application

Si vous avez besoin de changer l'URL de l'application (changement de DNS, ou bien passage de http à https), il ne suffit pas de modifier le .env pour que celà fonctionne. En effet, les fichiers de configuration de l'application étant transformés pour le front et dans une moindre mesure pour la partie Python, il faut aussi modifier ces fichiers là.

Dans tous les cas

Modifiez le .env pour mettre à jour l'URL et le protocole. Ce fichier est quand même réutilisé pour créer les settings.ini des différentes applications.

Configuration UsersHub

Modifiez le fichier geonature_common/usershub/config/config.py en remplaçant la valeur de la variable URL_APPLICATION.

Configuration TaxHub

Taxhub n'utilise que le fichier settings.ini.

Configuration GeoNature

Modifier le fichier geonature_common/geonature/config/geonature_config.toml en remplaçant les valeurs pour URL_APPLICATION, API_ENDPOINT et API_TAXHUB.

Ensuite, il faut lancer la mise à jour de la configuration à l'application.

docker ps
# On récupère le nom ou le hash du container de geonature pour lancer un exec dessus
docker exec -it <id ou nom de mon conteneur geonature> /bin/bash
# Les commande suivantes sont à exécuter dans le container
# On va dans le Frontend
cd /geonature/geonature/frontend
# On active npm (via nvm)
nvm install
nvm use
# On va dans le Backend
cd /geonature/geonature/backend
# On active le venv Python et on lance la commande de mise à jour de la configuration
source venv/bin/activate
geonature update_configuration
deactivate
# On peut ensuite sortir du container (via CTRL+D ou autre)

Configuration Atlas

Atlas n'utilise que le fichier settings.ini.

Charger un dump

Création de la base

La base doit être créée avant côté PGAdmin.

Il faut penser à ajouter les extensions postgis et postgis_raster avant de lancer la restauration.

Upload du dump

Le dump doit être placé sur le serveur.

  • Copier le dump dans /applications/projet/votreprojetgeonature/geonature_common/dbdump

Il faut ensuite aller dans le container de PGAdmin pour copier le dump dans le répertoire qui va bien (A noter, il pourrait probablement être possible de monter un volume sur le répertoire qui va bien).

  • Se connecter au container docker exec -it votreprojetgeonature_pgadmin_1_xxxxxxx /bin/sh
  • Déplacer le dump cp /geonature/geonature_common/dbdump/votre.dump /var/lib/pgadmin/storage/user_domain.com/

Lancement de la restauration

Dans PGAdmin, sur votre nouvelle base, choisissez l'option Restore, choisissez le fichier (attention à bien afficher tous les types de fichiers). Dans les Restore options, cochez les Do not save Owner et Privilege.

Il peut y avoir quelques erreurs, vérifiez si elles sont graves ou non (les erreurs de création de comptes ne sont pas graves).

Générer une image publiable

docker build -t <montag> -f app/Dockerfile.embed .

About

Script de déploiement Docker packagé de GeoNature et ses dépendances

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 94.2%
  • Dockerfile 5.8%