Skip to content

Commit

Permalink
Merge pull request #204 from BaseAdresseNationale/antoineludeau/db-se…
Browse files Browse the repository at this point in the history
…ed-service-to-init-data-to-db

Improved local deployment
  • Loading branch information
antoineludeau authored Sep 20, 2023
2 parents ea66f28 + 6dc8208 commit 514c8fd
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 48 deletions.
102 changes: 58 additions & 44 deletions README.md
Original file line number Diff line number Diff line change
@@ -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
```
2 changes: 1 addition & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions Dockerfile.dev → docker-resources/api/Dockerfile.dev
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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"]
CMD ["sh", "docker-resources/api/start.dev.sh"]
File renamed without changes.
2 changes: 1 addition & 1 deletion start.dev.sh → docker-resources/api/start.dev.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,4 @@ fi
# npm run compose
# npm run dist

pm2-runtime process.dev.yml
pm2-runtime docker-resources/api/process.dev.yml

0 comments on commit 514c8fd

Please sign in to comment.