From c9ead710e29512eeb2888981129a117495965080 Mon Sep 17 00:00:00 2001 From: antoineludeau <52679050+antoineludeau@users.noreply.github.com> Date: Tue, 5 Sep 2023 12:04:58 +0200 Subject: [PATCH 1/2] Re-organized docker resource files architecture --- docker-compose.yml | 2 +- Dockerfile.dev => docker-resources/api/Dockerfile.dev | 4 ++-- process.dev.yml => docker-resources/api/process.dev.yml | 0 start.dev.sh => docker-resources/api/start.dev.sh | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) rename Dockerfile.dev => docker-resources/api/Dockerfile.dev (81%) rename process.dev.yml => docker-resources/api/process.dev.yml (100%) rename start.dev.sh => docker-resources/api/start.dev.sh (95%) diff --git a/docker-compose.yml b/docker-compose.yml index 81168dbc..30e1af6b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -23,7 +23,7 @@ services: - "${REDIS_PORT:-6379}:6379" api: build: - dockerfile: 'Dockerfile.dev' + dockerfile: docker-resources/api/Dockerfile.dev depends_on: - db-mongo - db-postgres diff --git a/Dockerfile.dev b/docker-resources/api/Dockerfile.dev similarity index 81% rename from Dockerfile.dev rename to docker-resources/api/Dockerfile.dev index 49932cc6..190e751f 100644 --- a/Dockerfile.dev +++ b/docker-resources/api/Dockerfile.dev @@ -5,7 +5,7 @@ RUN npm install pm2 -g # optimzing caching for yarn install WORKDIR /app -COPY package.json yarn.lock . +COPY package.json yarn.lock ./ RUN yarn install # creating /data and /dist folder to be able to map volumes @@ -14,4 +14,4 @@ RUN mkdir data && mkdir dist # copying the root folder into the workdir taking into account the .dockerignore file COPY . . -CMD ["sh", "start.dev.sh"] \ No newline at end of file +CMD ["sh", "docker-resources/api/start.dev.sh"] \ No newline at end of file diff --git a/process.dev.yml b/docker-resources/api/process.dev.yml similarity index 100% rename from process.dev.yml rename to docker-resources/api/process.dev.yml diff --git a/start.dev.sh b/docker-resources/api/start.dev.sh similarity index 95% rename from start.dev.sh rename to docker-resources/api/start.dev.sh index b64a84f7..a42b8f70 100644 --- a/start.dev.sh +++ b/docker-resources/api/start.dev.sh @@ -35,4 +35,4 @@ fi # npm run compose # npm run dist -pm2-runtime process.dev.yml \ No newline at end of file +pm2-runtime docker-resources/api/process.dev.yml \ No newline at end of file From 6dc8208d8c5f28afb15a13d7a07d9e7fea63776f Mon Sep 17 00:00:00 2001 From: antoineludeau <52679050+antoineludeau@users.noreply.github.com> Date: Tue, 5 Sep 2023 12:05:47 +0200 Subject: [PATCH 2/2] Added local docker deployement info in Readme file --- README.md | 102 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 58 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 360556b4..85d8afbb 100644 --- a/README.md +++ b/README.md @@ -1,72 +1,86 @@ -# 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. -### Téléchargement des données nécessaires +### Deploiement local sans Docker -```bash -yarn download-datasets -``` -Télécharge fantoir.sqlite, gazetteer.sqlite, communes-locaux-adresses.json. +#### Pré-requis +- Node.js 16 ou supérieur +- MongoDB 4 ou supérieur +- Redis +- yarn ou npm -### Import des différentes sources +#### Commandes +Pour installer les dépendances, lancer la commande suivate : -```bash -yarn import:ign-api-gestion -yarn import:cadastre -yarn import:ftth +```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 : + +```sh +yarn prepare-contours ## Prepare les contours administratifs de la France entière. +``` -```bash -yarn compose +```sh +yarn download-datasets ## Télécharge fantoir.sqlite, gazetteer.sqlite, communes-locaux-adresses.json. ``` -### Production des fichiers +Pour déployer l'api et le worker, lancer les deux commandes suivantes en parallèle : -```bash -yarn dist +```sh +yarn dev ``` -## Opérations d’exploitation +```sh +yarn worker:dev +``` + +### Autres commandes -### Appliquer la mise à jour de la liste des communes certifiées d'office +```sh +yarn compose ## Consolidation des adresses +``` -```bash -yarn apply-batch-certification +```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 +``` \ No newline at end of file