Skip to content

Commit

Permalink
Feat(doc): add external module documentation (#45)
Browse files Browse the repository at this point in the history
* feat(doc): first draft on how to add external module to dockerised geonature
* feat(doc): add missing part on external module frontend
  • Loading branch information
jacquesfize authored Feb 17, 2025
1 parent f9dad0e commit 0e44c67
Showing 1 changed file with 56 additions and 10 deletions.
66 changes: 56 additions & 10 deletions docs/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@

Pour exécuter une commande `geonature`, lancer la commande :

```
```shell
docker compose exec -it geonature-backend geonature nom_de_la_commande
```

Exemples :

```
```shell
docker compose exec -it geonature-backend geonature --help
docker compose exec -it geonature-backend geonature dashboard refresh-vm
```
Expand All @@ -19,7 +19,7 @@ docker compose exec -it geonature-backend geonature dashboard refresh-vm

Créer un fichier `docker-compose.override.yml` contenant :

```
```yaml
services:
postgres:
ports:
Expand All @@ -37,7 +37,7 @@ Attention, le deuxième port est celui d’écoute dans le conteneur et doit res

Modifier le fichier `.env` comme ceci (on suppose que `HOST="mon-domaine.org"`) :

```
```shell
USERSHUB_HOST="usershub.${HOST}"
USERSHUB_HOSTPORT="usershub.${HOSTPORT}"
USERSHUB_PREFIX="/"
Expand Down Expand Up @@ -74,7 +74,7 @@ Mais ces données ne sont normalement plus nécessaires une fois le MNT importé

Créer un fichier `docker-compose.override.yml` avec ces lignes, pour ajouter au service `traefik` les labels suivants :

```
```yaml
services:
traefik:
labels:
Expand All @@ -89,33 +89,79 @@ services:
## Comment connaître la version de GeoNature contenue dans l’image Docker ?
```
```shell
docker image inspect ghcr.io/pnx-si/geonature-backend-extra --format '{{index .Config.Labels "org.opencontainers.image.version"}}'
```

ou, pour plus d’informations :

```
```shell
docker image inspect ghcr.io/pnx-si/geonature-backend-extra --format '{{json .Config.Labels}}'
```

## Installation d'un module externe

Cette section décrit la procédure d'ajout d'un module externe sur une instance GeoNature dockerisée. Cette procédure nécessite de créer une image Docker dédiée.

### Étape 1 : Ajouter le code source du module

Pour commencer, il est nécessaire d'intégrer le code source du module dans le dossier `sources`. Si vous avez cloné le dépôt `GeonatureDockerServices`, exécutez simplement la commande suivante :

```shell
git submodule add <repo_module> --path sources/nom_module
```

### Étape 2 : Ajouter le module dans l'image Docker

Une fois que le code source du module est dans le dossier `sources`, vous devez l'ajouter à la construction des images Docker pour le backend et le frontend de GeoNature (`geonature-backend-extra` et `geonature-frontend-extra`).

1. Ouvrez le fichier `Dockerfile-geonature-backend` et ajoutez les lignes suivantes **avant** la ligne `FROM ${GEONATURE_BACKEND_IMAGE}-wheels AS prod-extra` :

```docker
FROM build AS build-nom-module
WORKDIR /build/
COPY ./sources/nom_module .
RUN python setup.py bdist_wheel
```

2. Toujours dans le même fichier, ajoutez la ligne suivante **avant** `RUN --mount=type=cache,target=/root/.cache pip install *.whl sentry_sdk[flask]` :

```docker
COPY --from=build-nom-module /build/dist/*.whl .
```

3. Si votre module possède un frontend, ouvrez le fichier `Dockerfile-geonature-frontend` et ajouter les lignes suivantes **avant**`FROM source-extra AS build-extra` :

```docker
WORKDIR /build/external_modules/module_code
COPY ./sources/nom_module/frontend/ .
RUN --mount=type=cache,target=/root/.npm \
npm ci --omit=dev --omit=peer
```

### Étape 3 : Ajouter le fichier de configuration (si applicable)

Si votre module GeoNature nécessite un fichier de configuration spécifique, déposez-le dans le dossier `data/geonature/config`.

## Comment rebuilder localement les images Docker ?

- Initialiser et cloner les sous-modules git :
```bash

```shell
git submodule init
git submodule update
```

- Faire de même pour les sous-modules de GeoNature et UsersHub, exemple pour GeoNature :
```bash
```shell
cd sources/GeoNature
git submodule init
git submodule update
cd ../..
```
- Apporter vos éventuelles modifications au code source.
- Il est conseillé de renommer les images dans le fichier `.env` afin de ne pas rentrer en conflit avec les images officielles, par exemple en leur rajoutant un suffix `-local` :
```env
```shell
USERSHUB_IMAGE="ghcr.io/pnx-si/usershub-local:latest"
GEONATURE_BACKEND_IMAGE="ghcr.io/pnx-si/geonature-backend-local:latest"
GEONATURE_BACKEND_EXTRA_IMAGE="ghcr.io/pnx-si/geonature-backend-extra-local:latest"
Expand Down

0 comments on commit 0e44c67

Please sign in to comment.