Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
jacquesfize committed Dec 16, 2024
2 parents 3149c0d + c6a384d commit 91caef0
Show file tree
Hide file tree
Showing 19 changed files with 70 additions and 119 deletions.
7 changes: 0 additions & 7 deletions .env.sample
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,6 @@ USERSHUB_HOST="${HOST}"
USERSHUB_HOSTPORT="${HOSTPORT}"
USERSHUB_PREFIX="/usershub"

TAXHUB_IMAGE="ghcr.io/pnx-si/taxhub:latest"
TAXHUB_PROTOCOL="${BASE_PROTOCOL}"
TAXHUB_HOST="${HOST}"
TAXHUB_HOSTPORT="${HOSTPORT}"
TAXHUB_PREFIX="/taxhub"
TAXHUB_API_PREFIX="${TAXHUB_PREFIX}/api"

GEONATURE_BACKEND_EXTRA_IMAGE="ghcr.io/pnx-si/geonature-backend-extra:latest"
GEONATURE_BACKEND_PROTOCOL="${BASE_PROTOCOL}"
GEONATURE_BACKEND_HOST="${HOST}"
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ jobs:
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: GEONATURE_BACKEND_IMAGE=ghcr.io/pnx-si/geonature-backend:2.14.2
build-args: GEONATURE_BACKEND_IMAGE=ghcr.io/pnx-si/geonature-backend:2.15.0

frontend:
name: Build geonature frontend docker image
Expand Down Expand Up @@ -92,4 +92,4 @@ jobs:
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: GEONATURE_FRONTEND_IMAGE=ghcr.io/pnx-si/geonature-frontend:2.14.2
build-args: GEONATURE_FRONTEND_IMAGE=ghcr.io/pnx-si/geonature-frontend:2.15.0
18 changes: 5 additions & 13 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,24 +1,16 @@
[submodule "GeoNature"]
path = sources/GeoNature
url = https://github.com/PnX-SI/GeoNature.git
branch = feat/docker-action
[submodule "TaxHub"]
path = sources/TaxHub
url = https://github.com/PnX-SI/TaxHub.git
branch = develop
url = ../GeoNature.git
[submodule "UsersHub"]
path = sources/UsersHub
url = https://github.com/PnX-SI/UsersHub.git
url = ../UsersHub.git
branch = develop
[submodule "gn_module_export"]
path = sources/gn_module_export
url = https://github.com/PnX-SI/gn_module_export.git
[submodule "gn_module_import"]
path = sources/gn_module_import
url = https://github.com/PnX-SI/gn_module_import.git
url = ../gn_module_export.git
[submodule "gn_module_dashboard"]
path = sources/gn_module_dashboard
url = https://github.com/PnX-SI/gn_module_dashboard.git
url = ../gn_module_dashboard.git
[submodule "gn_module_monitoring"]
path = sources/gn_module_monitoring
url = https://github.com/PnX-SI/gn_module_monitoring
url = ../gn_module_monitoring
24 changes: 7 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
# GeoNature Docker Services

Ce dépôt permet de déployer automatiquement et facilement GeoNature, UsersHub et TaxHub dans un environnement dockerisé et accessible en HTTPS.
De plus, celui-ci fournit une image Docker de GeoNature contenant, outre les modules du cœur (Occtax, Occhab, Validation), les modules suivants :
Ce dépôt permet de déployer automatiquement et facilement GeoNature, UsersHub dans un environnement dockerisé et accessible en HTTPS. De plus, celui-ci fournit une image Docker de GeoNature contenant, outre les modules du cœur (Occtax, Occhab, Validation, Import), les modules suivants :

- [Import](https://github.com/PnX-SI/gn_module_import)
- [Export](https://github.com/PnX-SI/gn_module_exports)
- [Dashboard](https://github.com/PnX-SI/gn_module_dashboard)
- [Monitorings](https://github.com/PnX-SI/gn_module_monitorings)
Expand All @@ -19,19 +17,16 @@ De plus, celui-ci fournit une image Docker de GeoNature contenant, outre les mod
- Lancer la commande `./init-config.sh` afin de créer les fichiers de configuration suivants, avec des clés secrètes générées aléatoirement :
- `config/geonature/geonature_config.toml`
- `config/usershub/config.py`
- `config/taxhub/config.py`
- Lancer les conteneurs : `docker compose up -d`

Les logs de tous les services sont accessibles avec la commande `docker compose logs -f`.
Pour n'afficher que les 100 dernières lignes, on utilise l'option `--tail 100` et donc la commande `docker compose logs -f --tail 100`.
Pour n'afficher les logs que d'un service en particulier, on utilise la commande `docker compose logs -f <nom du service>`.


## Les services

- `postgres` : la base de données
- `usershub` : la gestion des utilisateurs
- `taxhub` : la gestion du référentiel taxonomique
- `geonature-backend` : l’API de GeoNature
- `geonature-frontend` : l’interface web de GeoNature
- `geonature-worker` : exécution de certaines tâches de GeoNature en arrière-plan (import, export, mail, etc...)
Expand All @@ -45,7 +40,6 @@ geonature-frontend 80/tcp
geonature-worker 8000/tcp
postgres 0.0.0.0:5435->5432/tcp, :::5435->5432/tcp
redis 6379/tcp
taxhub 5000/tcp
traefik 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:80->80/tcp, [::]:443->443/tcp
usershub 5001/tcp
```
Expand All @@ -58,36 +52,37 @@ Voir la documentation des différentes applications pour renseigner les fichiers

- GeoNature : `./config/geonature/geonature_config.toml` ([fichier d’exemple](https://github.com/PnX-SI/GeoNature/tree/master/config/geonature_config.toml.sample))
- UsersHub : `./config/usershub/config.py` ([fichier d’exemple](https://github.com/PnX-SI/UsersHub/tree/master/config/config.py.sample))
- TaxHub : `./config/taxhub/config.py` ([fichier d’exemple](https://github.com/PnX-SI/TaxHub/apptax/config.py.sample))

Ces fichiers doivent contenir _a minima_ le paramètre `SECRET_KEY`.
Vous pouvez générer automatiquement des fichiers vierges contenant des clés secrètes aléatoires avec le script `./init-config.sh`.

Si vous modifiez les fichiers de configuration de GeoNature, d'un de ses modules, de TaxHub ou de UsersHub, vous devez relancer les conteneurs Docker avec la commande `docker compose restart` (ou idéalement seulement le conteneur concerné, par exemple `docker compose restart usershub`).
Si vous modifiez les fichiers de configuration de GeoNature, d'un de ses modules, de UsersHub, vous devez relancer les conteneurs Docker avec la commande `docker compose restart` (ou idéalement seulement le conteneur concerné, par exemple `docker compose restart usershub`).

À noter que certaines variables seront fournies en tant que variables d'environnement (voir les fichiers [`.env`](./.env.sample) et [`docker-compose.yml`](./docker-compose.yml)), comme par exemple :

- `URL_APPLICATION`
- `SQLALCHEMY_DATABASE_URI`
- ...

Vous pouvez personnaliser la [politique de redémarrage automatique des services](https://github.com/compose-spec/compose-spec/blob/master/spec.md#restart) en paramétrant la variable `RESTART_POLICY` du fichier `.env` (valeur par défaut: `unless-stopped`)

### Dossiers de configuration et de customisation

- Les fichiers de configuration de GeoNature et de ses modules, de TaxHub et de UsersHub sont donc dans le dossier `GeoNature-Docker-services/config/`
- Les fichiers de configuration de GeoNature, de ses modules et de UsersHub sont donc dans le dossier `GeoNature-Docker-services/config/`
- Les fichiers de customisation de GeoNature sont stockés dans le dossier `GeoNature-Docker-services/data/geonature/custom/`
- Les fichiers des médias de GeoNature (photos, application mobile...) sont stockés dans le dossier `GeoNature-Docker-services/data/geonature/media/`

### Configuration par variable d’environnement

Les applications peuvent être configurées par des variables d’environnement préfixées respectivement par `GEONATURE_`, `TAXHUB_` et `USERSHUB_` (voir [from_prefix_env](https://flask.palletsprojects.com/en/2.2.x/api/#flask.Config.from_prefixed_env)).
Les applications peuvent être configurées par des variables d’environnement préfixées respectivement par `GEONATURE_` et `USERSHUB_` (voir [from_prefix_env](https://flask.palletsprojects.com/en/2.2.x/api/#flask.Config.from_prefixed_env)).
Ces variables d’environnement doivent être renseignées directement dans le fichier `docker-compose.yml`, bien que certaines variables sont définies à partir d’une variable du même nom en provenance du fichier `.env`.

## Mettre à jour GeoNature et ses modules

- Vérifiez si la [dernière version disponible](https://github.com/PnX-SI/GeoNature-Docker-services/releases) correspond aux versions des applications que vous souhaitez mettre à jour
- Placez vous dans le dossier `GeoNature-Docker-services` de votre serveur
- Mettez à jour le contenu du dossier dans sa dernière version : `git pull`
- Lancez la commande qui va télécharger les dernières versions des différentes applications et les relancer : `docker compose pull && docker compose up -d`
- Lancez la commande qui va télécharger les dernières versions des différentes applications et les relancer : `docker compose pull && docker compose up -d --remove-orphans`

## FAQ

Expand Down Expand Up @@ -116,8 +111,3 @@ Ces images sont le pendant de [celles publiées sur le dépôt de GeoNature](htt

- [Dépôt](https://github.com/PnX-SI/UsersHub)
- [`Dockerfile`](https://github.com/PnX-SI/UsersHub/blob/master/Dockerfile)

### TaxHub

- [Dépôt](https://github.com/PnX-SI/Taxhub)
- [`Dockerfile`](https://github.com/PnX-SI/TaxHub/blob/master/Dockerfile)
2 changes: 2 additions & 0 deletions assets/postgres/initdb/add-extensions.sql
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ CREATE EXTENSION IF NOT EXISTS "hstore";
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE EXTENSION IF NOT EXISTS "pg_trgm";
CREATE EXTENSION IF NOT EXISTS "unaccent";
CREATE EXTENSION IF NOT EXISTS "ltree";



CREATE EXTENSION IF NOT EXISTS "postgis";
Expand Down
6 changes: 0 additions & 6 deletions build/Dockerfile-geonature-backend
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,6 @@ RUN --mount=type=cache,target=/root/.cache \
pip install --upgrade pip setuptools wheel


FROM build AS build-import
WORKDIR /build/
COPY ./sources/gn_module_import .
RUN python setup.py bdist_wheel

FROM build AS build-export
WORKDIR /build/
COPY ./sources/gn_module_export .
Expand All @@ -33,7 +28,6 @@ WORKDIR /dist/geonature
RUN --mount=type=cache,target=/var/cache/apt \
--mount=type=cache,target=/var/lib/apt \
apt-get update && apt-get install -y libproj-dev proj-bin
COPY --from=build-import /build/dist/*.whl .
COPY --from=build-export /build/dist/*.whl .
COPY --from=build-dashboard /build/dist/*.whl .
COPY --from=build-monitoring /build/dist/*.whl .
Expand Down
5 changes: 0 additions & 5 deletions build/Dockerfile-geonature-frontend
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,6 @@
ARG GEONATURE_FRONTEND_IMAGE
FROM ${GEONATURE_FRONTEND_IMAGE}-source AS source-extra

WORKDIR /build/external_modules/import
COPY ./sources/gn_module_import/frontend/ .
RUN --mount=type=cache,target=/root/.npm \
npm ci --omit=dev --omit=peer

WORKDIR /build/external_modules/exports
COPY ./sources/gn_module_export/frontend/ .
RUN --mount=type=cache,target=/root/.npm \
Expand Down
2 changes: 0 additions & 2 deletions build/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,6 @@ docker build \
-f ./build/Dockerfile-geonature-frontend \
-t ${GEONATURE_FRONTEND_EXTRA_IMAGE} .

# TaxHub
docker build -f sources/TaxHub/Dockerfile -t ${TAXHUB_IMAGE} --target=prod sources/TaxHub/

# UsersHub
docker build -f sources/UsersHub/Dockerfile -t ${USERSHUB_IMAGE} --target=prod sources/UsersHub/
Empty file removed config/taxhub/.gitkeep
Empty file.
54 changes: 21 additions & 33 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
version: "3.9"

x-restart-policy: &restart-policy
restart: ${RESTART_POLICY:-unless-stopped}

x-defaults: &defaults
user: ${UID}:${GID}

Expand All @@ -18,7 +21,6 @@ x-geonature-backend-env: &geonature-backend-env
GEONATURE_SQLALCHEMY_DATABASE_URI: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT:-5432}/${POSTGRES_DB}
GEONATURE_URL_APPLICATION: ${GEONATURE_FRONTEND_PROTOCOL}://${GEONATURE_FRONTEND_HOSTPORT}${GEONATURE_FRONTEND_PREFIX}
GEONATURE_API_ENDPOINT: ${GEONATURE_BACKEND_PROTOCOL}://${GEONATURE_BACKEND_HOSTPORT}${GEONATURE_BACKEND_PREFIX}
GEONATURE_API_TAXHUB: ${TAXHUB_PROTOCOL}://${TAXHUB_HOSTPORT}${TAXHUB_API_PREFIX}
GEONATURE_CONFIG_FILE: ${GEONATURE_CONFIG_FILE:-/dist/config/geonature_config.toml}
GEONATURE_CELERY__broker_url: ${GEONATURE_CELERY__broker_url:-redis://redis}
GEONATURE_CELERY__result_backend: ${GEONATURE_CELERY__result_backend:-redis://redis}
Expand All @@ -37,6 +39,7 @@ x-geonature-backend-defaults: &geonature-backend-defaults

services:
traefik:
<<: *restart-policy
image: traefik:2.10.4
command:
- "--providers.docker=true"
Expand All @@ -57,6 +60,7 @@ services:
- ${HTTPS_PORT:-443}:443

redis:
<<: *restart-policy
image: ${REDIS_IMAGE:-redis:7-alpine}
volumes:
- redis:/data
Expand All @@ -67,6 +71,7 @@ services:
retries: 5

postgres:
<<: *restart-policy
image: ${POSTGRES_IMAGE:-postgis/postgis:15-3.4}
environment:
POSTGRES_DB: ${POSTGRES_DB}
Expand All @@ -78,13 +83,23 @@ services:
- postgres:/var/lib/postgresql/data
healthcheck:
# during db init, postgres is not listening on localhost so this avoid false healthy status
test: ["CMD", "pg_isready", "-d", "${POSTGRES_DB}", "-U", "${POSTGRES_USER}", "-h", "localhost"]
test:
[
"CMD",
"pg_isready",
"-d",
"${POSTGRES_DB}",
"-U",
"${POSTGRES_USER}",
"-h",
"localhost",
]
interval: 10s
timeout: 5s
retries: 5

usershub:
<<: *defaults
<<: [*restart-policy, *defaults]
image: ${USERSHUB_IMAGE}
depends_on:
postgres:
Expand All @@ -108,32 +123,6 @@ services:
- "traefik.http.routers.usershub.entrypoints=websecure"
- "traefik.http.routers.usershub.tls.certResolver=acme-resolver"

taxhub:
<<: *defaults
image: ${TAXHUB_IMAGE}
depends_on:
postgres:
condition: service_healthy
geonature-install-db:
condition: service_completed_successfully
volumes:
- ./config/taxhub:/dist/config
- ./data/taxhub/medias:${TAXHUB_STATIC_FOLDER:-/dist/static}/medias
environment:
<<: *env-defaults
TAXHUB_APPLICATION_ROOT: "${TAXHUB_PREFIX}"
TAXHUB_SQLALCHEMY_DATABASE_URI: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT:-5432}/${POSTGRES_DB}
TAXHUB_SETTINGS: ${TAXHUB_SETTINGS:-/dist/config/config.py}
TAXHUB_UPLOAD_FOLDER: "medias"
TAXHUB_SQLALCHEMY_TRACK_MODIFICATIONS: False
TAXHUB_COOKIE_EXPIRATION: 3600
TAXHUB_PASS_METHOD: "hash"
labels:
- "traefik.enable=true"
- "traefik.http.routers.taxhub.rule=Host(`${TAXHUB_HOST}`) && PathPrefix(`${TAXHUB_PREFIX}`)"
- "traefik.http.routers.taxhub.entrypoints=websecure"
- "traefik.http.routers.taxhub.tls.certResolver=acme-resolver"

geonature-install-db:
<<: *geonature-backend-defaults
command: "geonature permissions supergrant --yes ${GEONATURE_SUPERGRANT_ARGS:---help}"
Expand All @@ -147,11 +136,9 @@ services:
install_ref_sensitivity: ${GEONATURE_DB_INSTALL_REF_SENSITIVITY:-true}
usershub: ${GEONATURE_DB_INSTALL_USERSHUB:-true}
usershub_samples: ${GEONATURE_DB_INSTALL_USERSHUB_SAMPLES:-true}
taxhub: ${GEONATURE_DB_INSTALL_TAXHUB:-true}
taxhub_samples: ${GEONATURE_DB_INSTALL_TAXHUB_SAMPLES:-true}

geonature-worker:
<<: *geonature-backend-defaults
<<: [*restart-policy, *geonature-backend-defaults]
depends_on:
<<: *geonature-depends-on-defaults
geonature-install-db:
Expand All @@ -160,7 +147,7 @@ services:
command: celery -A geonature.celery_app:app worker --beat --schedule-filename=/dist/media/celerybeat-schedule.db

geonature-backend:
<<: *geonature-backend-defaults
<<: [*restart-policy, *geonature-backend-defaults]
depends_on:
<<: *geonature-depends-on-defaults
geonature-install-db:
Expand All @@ -183,6 +170,7 @@ services:
- "traefik.http.routers.geonature-backend.tls.certResolver=acme-resolver"

geonature-frontend:
<<: *restart-policy
image: ${GEONATURE_FRONTEND_EXTRA_IMAGE}
environment:
- NGINX_LOCATION=${GEONATURE_FRONTEND_PREFIX}
Expand Down
35 changes: 25 additions & 10 deletions docs/changelog.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,29 @@
# CHANGELOG

## 2.15.0

**🏷️ Versions**

- GeoNature 2.15.0
- TaxHub 2.1.0
- UsersHub 2.4.4
- GeoNature-dashboard 1.5.0
- GeoNature-export 1.7.2
- GeoNature-monitoring 1.0.0

**🚀 Nouveautés**

- TaxHub est désormais intégré à GeoNature.

**⚠️ Notes de version**

- Avant d'effectuer la mise à jour de GeoNature, installer l'extension `ltree` dans le container `postgres` :
`docker compose exec postgres psql -U [user_postgres] -d [nom_db_geonature] -f /docker-entrypoint-initdb.d/add-extensions.sql`
- La suppression du container TaxHub implique une modification du docker-compose, n'oubliez pas de récupérer les modifications de ce dernier ([Voir documentation](https://github.com/PnX-SI/GeoNature-Docker-services?tab=readme-ov-file#mettre-%C3%A0-jour-geonature-et-ses-modules))

## 2.14.2 (2024-06-03)

- Geonature 2.14.2
- GeoNature 2.14.2
- TaxHub 1.14.1
- UsersHub 2.4.3
- GeoNature-dashboard 1.5.0
Expand Down Expand Up @@ -71,9 +92,7 @@
- Comme indiqué dans la procédure classique de mise à jour, vous devez télécharger la nouvelle version du dépôt (notamment pour mettre à jour le fichier `docker-compose.yml` qui a évolué dans cette version)
- Si vous l'aviez modifié localement, reportez les évolutions du fichier `docker-compose.yml` (#20), en y ajoutant les paramètres de TaxHub

2.13.2 (2023-09-28)

---
## 2.13.2 (2023-09-28)

**🏷️ Versions**

Expand All @@ -93,9 +112,7 @@

- Correction du chargement de la customisation (au niveau de GeoNature)

0.2.0 (2023-09-19)

---
## 0.2.0 (2023-09-19)

**🏷️ Versions**

Expand Down Expand Up @@ -136,9 +153,7 @@ Les modifications suivantes ont été apportées au fichier `docker-compose.yml`
command: celery -A geonature.celery_app:app worker --beat --schedule-filename=/dist/media/celerybeat-schedule.db
```

0.1.0 (2023-09-15)

---
## 0.1.0 (2023-09-15)

Première version fonctionnelle de GeoNature-Docker-services, permettant de déployer, avec un seul fichier `docker-compose`, GeoNature et ses 4 modules externes principaux, TaxHub, UsersHub et traefik (comme reverse proxy et pour gérer les certificats SSL, générés automatiquement pour que les applications soient accessibles en HTTPS lors de leur installation).

Expand Down
Loading

0 comments on commit 91caef0

Please sign in to comment.