-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added db seed service to import data inside db with docker-compose lo…
…cal deployment
- Loading branch information
1 parent
43abf67
commit 632edc2
Showing
10 changed files
with
123 additions
and
52 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,72 +1,102 @@ | ||
# Plateforme Base Adresse Nationale | ||
# Plateforme de la Base Adresse Nationale | ||
|
||
Ce dépôt regroupe l'essentiel des briques faisant partie de la plateforme Base Adresse Nationale, à savoir : | ||
## Architecture | ||
|
||
- les routines d'import ; | ||
- les routines de consolidation ; | ||
- les routines de production des fichiers ; | ||
- un service "worker" réagissant en temps réel à toute modification. | ||
La BAN Plateforme contient : | ||
- Une API synchrone et asynchrone : serveur Express (point d'entrée : server.js). | ||
L'API asynchrone envoit des tâches dans la queue du redis, pris en charge par le worker. | ||
- Un worker (point d'entrée : worker.js) qui récupère les tâches du redis (qui ont été déposées soit par l'API, soit par les scripts). | ||
- Des scripts (imports, consolidation, exports, ...). | ||
|
||
## Installer un environnement de développement | ||
La BAN Plateforme import et export des données d'une base MongoDB. | ||
|
||
### Pré-requis | ||
|
||
- Node.js 16 ou supérieur | ||
- MongoDB 4 ou supérieur | ||
- Redis | ||
- yarn ou npm | ||
## Installation | ||
|
||
### Configuration | ||
Pour mettre en place un environnement fonctionnel, vous pouvez partir du fichier .env.sample et le copier en le renommant .env. | ||
|
||
Pour mettre en place un environnement fonctionnel, vous pouvez partir du fichier `.env.sample` et le copier en le renommant `.env`. | ||
### Deploiement local avec Docker | ||
|
||
Compte-tenu de la puissance de calcul nécessaire pour effectuer les traitements sur France entière il est conseillé de restreindre à un seul département pour les développements. Par exemple `DEPARTEMENTS=57`. | ||
#### Pré-requis | ||
- Docker | ||
- Docker-compose | ||
|
||
### Installation des dépendances | ||
#### Commandes | ||
Pour déployer l'environnement, lancer la commande suivante : | ||
|
||
```bash | ||
yarn | ||
```sh | ||
docker-compose up --build -d | ||
``` | ||
|
||
### Préparation des contours administratifs | ||
--build : permet de builder les images locales. | ||
-d : permet de lancer les conteneurs en arrière plan. | ||
|
||
```bash | ||
yarn prepare-contours | ||
``` | ||
Prepare les contours France entière sans prendre en compte le .env. | ||
La commande précédente va déployer une architecture locale, interconnectée, avec : | ||
- un conteneur "db" (image mongo:4.2.23) | ||
- un conteneur "redis" (image redis:4.0.9) | ||
- un conteneur "api" (à partir de l'image définie dans le fichier docker-resources/api/Dockerfile.dev) => Au lancement de ce conteneur, un script d'initialisation (défini dans le fichier docker-resources/api/start.sh) va permettre le téléchargement des données requises au démarrage de la plateforme. | ||
- un conteneur "db_seed" (à partir de l'image définie dans le fichier docker-resources/db_seed/Dockerfile.dev) => Ce conteneur éphémère permet d'initialiser (de façon optionnelle) de la donnée dans le conteneur "db". | ||
|
||
#### Initialisation de données dans la BDD (optionnel) | ||
|
||
Pour initialiser des données dans la base MongoDB: | ||
- remplir le dossier docker-resources/db_seed/data-to-init avec des fichiers .json (le nom des fichiers correspondront au nom des collections qui seront importées. Exemple: si le dossier contient le fichier 'communes.json', la donnée contenue dans ce fichier sera importée dans la collection "communes"). | ||
- activer la fonctionnalité d'import en passant la variable d'environnement ACTIVATE_DB_SEED à : | ||
|
||
### Téléchargement des données nécessaires | ||
```sh | ||
ACTIVATE_DB_SEED = true | ||
``` | ||
- les données seront soit ajoutées soit écrasées selon la valeur de la variable d'environnement | ||
|
||
```bash | ||
yarn download-datasets | ||
```sh | ||
OVERRIDE_DATA_ON_IMPORT = true ##true: données écrasées, false: données ajoutées | ||
``` | ||
Télécharge fantoir.sqlite, gazetteer.sqlite, communes-locaux-adresses.json. | ||
|
||
### Import des différentes sources | ||
### Deploiement local sans Docker | ||
|
||
```bash | ||
yarn import:ign-api-gestion | ||
yarn import:cadastre | ||
yarn import:ftth | ||
#### Pré-requis | ||
- Node.js 16 ou supérieur | ||
- MongoDB 4 ou supérieur | ||
- Redis | ||
- yarn ou npm | ||
|
||
#### Commandes | ||
Pour installer les dépendances, lancer la commande suivate : | ||
|
||
```sh | ||
yarn | ||
``` | ||
Prend en compte le .env pour ne télécharger les données que sur le département concerné. | ||
|
||
### Consolidation des adresses | ||
Il faut ensuite télécharger les fichiers requis au démarrage de la plateforme avec les commandes suivantes : | ||
|
||
```bash | ||
yarn compose | ||
```sh | ||
yarn prepare-contours ## Prepare les contours administratifs de la France entière. | ||
``` | ||
|
||
### Production des fichiers | ||
```sh | ||
yarn download-datasets ## Télécharge fantoir.sqlite, gazetteer.sqlite, communes-locaux-adresses.json. | ||
``` | ||
|
||
```bash | ||
yarn dist | ||
Pour déployer l'api et le worker, lancer les deux commandes suivantes en parrallèle : | ||
|
||
```sh | ||
yarn dev | ||
``` | ||
|
||
## Opérations d’exploitation | ||
```sh | ||
yarn worker:dev | ||
``` | ||
|
||
### Appliquer la mise à jour de la liste des communes certifiées d'office | ||
### Autres commandes | ||
|
||
```bash | ||
yarn apply-batch-certification | ||
```sh | ||
yarn compose ## Consolidation des adresses | ||
``` | ||
|
||
```sh | ||
yarn dist ## Production des fichiers d'export | ||
``` | ||
|
||
```sh | ||
yarn apply-batch-certification ## Appliquer la mise à jour de la liste des communes certifiées d'office | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
FROM mongo:4.2.23 | ||
|
||
COPY docker-resources/db_seed/data-to-init/ ./data-to-init | ||
COPY docker-resources/db_seed/start.dev.sh ./start.dev.sh | ||
CMD ["bash", "start.dev.sh"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
[{ | ||
"codeCommune":"12345" | ||
}] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
## This script is used to import data into the database | ||
## It looks into the data-to-init folder and import all the json files | ||
## The name of the collection imported will be the name of the file without the extension | ||
|
||
echo "ACTIVATE_DB_SEED : $ACTIVATE_DB_SEED" | ||
echo "OVERRIDE_DATA_ON_IMPORT : $OVERRIDE_DATA_ON_IMPORT" | ||
|
||
if [[ "$ACTIVATE_DB_SEED" = "true" ]]; then | ||
for file in `ls data-to-init`; do | ||
filename="${file%.*}" | ||
echo "Importing $file data into $filename collection..." | ||
if [[ "$OVERRIDE_DATA_ON_IMPORT" = "true" ]]; then | ||
mongoimport --host db --db $MONGODB_DBNAME --collection $filename --type json --file /data-to-init/$file --jsonArray --drop | ||
else | ||
mongoimport --host db --db $MONGODB_DBNAME --collection $filename --type json --file /data-to-init/$file --jsonArray | ||
fi | ||
|
||
done | ||
fi |