Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improved local deployment #204

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading