Compare commits
7 Commits
9b13a144e0
...
main
Author | SHA1 | Date | |
---|---|---|---|
83addc7a18 | |||
7a5cf82174 | |||
be12779d05 | |||
a60f9ca48c | |||
afe39cc5c8 | |||
674d58d5b9 | |||
0664c39ee6 |
@ -1,28 +1,37 @@
|
||||
#
|
||||
# Docker
|
||||
#
|
||||
|
||||
#COMPOSE_FILE=docker-compose.yml:docker-compose.traefik.yml
|
||||
COMPOSE_FILE=docker-compose.yml:docker-compose.local.yml
|
||||
OPENDATA_NETWORK_NAME=opendata
|
||||
|
||||
|
||||
#
|
||||
# PostgreSQL
|
||||
#
|
||||
|
||||
POSTGRES_CONTAINER_NAME=postgres
|
||||
POSTGRES_IMAGE=postgres:latest
|
||||
POSTGRES_IMAGE=postgres:16.1
|
||||
POSTGRES_VOLUME_NAME=postgres
|
||||
|
||||
POSTGRES_USER=postgres
|
||||
POSTGRES_PASSWORD=postgres
|
||||
POSTGRES_PASSWORD=utiliser-la-commande-pour-generer-un-mot-de-passe # tr -cd '[:alnum:]' < /dev/urandom | fold -w "64" | head -n 1 | tr -d '\n' ; echo
|
||||
POSTGRES_DB=postgres
|
||||
|
||||
DB_ANON_ROLE=anon
|
||||
DB_SCHEMA=public
|
||||
|
||||
PGADMIN_USER=postgres@postgres.org
|
||||
PGADMIN_PASSWORD=postgres
|
||||
|
||||
|
||||
#
|
||||
# PostgREST
|
||||
#
|
||||
|
||||
POSTGREST_URL=https://opendata.example.org/
|
||||
POSTGREST_DOMAIN=localhost
|
||||
POSTGREST_CONTAINER_NAME=postgrest
|
||||
POSTGREST_IMAGE=postgrest/postgrest:v12.0.2
|
||||
|
||||
POSTGREST_URL=http://${POSTGREST_DOMAIN}:3000/
|
||||
PGRST_DB_MAX_ROWS=100
|
||||
|
||||
|
||||
@ -30,6 +39,14 @@ PGRST_DB_MAX_ROWS=100
|
||||
# Swagger UI
|
||||
#
|
||||
|
||||
SWAGGER_URL=https://ui.opendata.example.org/
|
||||
SWAGGER_DOMAIN=ui.opendata.example.org
|
||||
SWAGGER_CONTAINER_NAME=swagger
|
||||
SWAGGER_IMAGE=swaggerapi/swagger-ui:v5.11.0
|
||||
|
||||
#
|
||||
# Traefik
|
||||
#
|
||||
|
||||
TRAEFIK_NETWORK_NAME=traefik
|
||||
TRAEFIK_ROUTER_NAME=opendata
|
||||
TRAEFIK_ENTRYPOINTS=websecure
|
||||
|
26
README.md
26
README.md
@ -2,14 +2,20 @@
|
||||
|
||||
Création d'une API unifié pour accéder à l'ensemble des données dont P4Pillon a besoin.
|
||||
|
||||
Le principe du projet est de pouvoir intérroger les données de l'open data depuis un réseau local et ainsi s'affranchir des pannes d'internet. Les données pourront être mise à jour régulièrement pour permettre d'avoir les dernières mise à jour.
|
||||
Le principe du projet est de pouvoir intérroger les données de l'open data depuis un réseau local et ainsi s'affranchir des pannes d'internet ou des APIs. Les données pourront être mise à jour régulièrement pour permettre d'avoir les dernières mise à jour.
|
||||
|
||||
|
||||
## Liens
|
||||
|
||||
- [Source du projet](https://forge.p4pillon.org/P4Pillon/data)
|
||||
- [Gestion des tâches](https://forge.p4pillon.org/P4Pillon/OpenDataAPI/projects/3)
|
||||
- [API de P4Pillon](https://data.p4pillon.org)
|
||||
- [Interface Swagger pour l'API](https://ui.data.p4pillon.org)
|
||||
- [Support et questionnement](https://matrix.to/#/!UXjiUOiWQMEsMgMNMN:converser.eu)
|
||||
|
||||
## Données
|
||||
|
||||
Voici les données dont nous rappatrirons.
|
||||
|
||||
### FINESS
|
||||
### ✅ FINESS
|
||||
|
||||
Informations sur les établissements sanitaires, sociaux, médico-sociaux, et de formation aux professions de ces secteurs.
|
||||
|
||||
@ -17,7 +23,7 @@ Liens :
|
||||
- [Site web](https://finess.esante.gouv.fr/)
|
||||
- [Page web sur l'Open Data du gouvernement](https://www.data.gouv.fr/fr/datasets/finess-extraction-du-fichier-des-etablissements/)
|
||||
|
||||
### INPI
|
||||
### ✅ INPI
|
||||
|
||||
L'Institut national de la propriété industrielle, abrégé par le sigle INPI, est un établissement public à caractère administratif, placé sous la tutelle du ministère français de l'Économie, de l'Industrie et du Numérique.
|
||||
|
||||
@ -35,7 +41,7 @@ Il y a 2 posibilités pour récupérer les données de l'ensemble des entreprise
|
||||
- Orchestrateur : [Docker Compose](https://docs.docker.com/compose/)
|
||||
|
||||
|
||||
## Script
|
||||
## Script
|
||||
|
||||
Un script permet d'initialiser le projet en téléchargeant les dépendences, les données de l'Open Data ainsi que de transformer ses données en fichiers CSV.
|
||||
|
||||
@ -56,8 +62,8 @@ La configuration se fait à l'aide d'un fichier `.env`, vous devez modifier les
|
||||
Voici quelques commandes possibles :
|
||||
|
||||
```bash
|
||||
docker compose up -d # Création des conteneurs
|
||||
docker compose down -v # Suppresion des conteneurs ainsi que des données
|
||||
docker compose --env-file .env up -d # Création des conteneurs
|
||||
docker compose --env-file .env down -v # Suppresion des conteneurs ainsi que des données
|
||||
```
|
||||
|
||||
### PostgreSQL
|
||||
@ -66,5 +72,5 @@ La fonction `COPY` est utilisé dans les fichiers SQL du dossier `./initdb` perm
|
||||
|
||||
### PostgREST
|
||||
|
||||
Pour la configuration : https://postgrest.org/en/latest/configuration.html#environment-variables
|
||||
Pour requêter des données : https://postgrest.org/en/stable/references/api/tables_views.html#horizontal-filtering-rows
|
||||
- [Pour la configuration](https://postgrest.org/en/latest/configuration.html#environment-variables)
|
||||
- [Pour requêter des données](https://postgrest.org/en/stable/references/api/tables_views.html#horizontal-filtering-rows)
|
||||
|
12
build.sh
12
build.sh
@ -1,25 +1,25 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Commande de base avec Docker
|
||||
npm="docker run -it --rm --user $(id -u):$(id -g) -v $PWD:/home/node/app -w /home/node/app node:lts-alpine npm config set update-notifier false && npm"
|
||||
npm="docker run -it --rm --user $(id -u):$(id -g) -v $PWD:/home/node/app -w /home/node/app node:lts-alpine ash -c 'npm config set update-notifier false && npm"
|
||||
ash="docker run -it --rm --user $(id -u):$(id -g) -v $PWD:/home/node/app -w /home/node/app apteno/alpine-jq ash"
|
||||
|
||||
Suppression des fichiers
|
||||
# Suppression des fichiers
|
||||
echo $'\n\n#\n# Suppression des fichiers 🧹\n#\n'
|
||||
eval $npm run clean
|
||||
eval $npm run clean\'
|
||||
|
||||
# Installation des dépendances
|
||||
echo $'\n\n#\n# Installation des dépendances ⬇️\n#\n'
|
||||
eval $npm install
|
||||
eval $npm install\'
|
||||
|
||||
# Téléchargement des données
|
||||
echo $'\n\n#\n# Téléchargement des données 💡\n#\n'
|
||||
eval $npm run download
|
||||
eval $npm run download\'
|
||||
eval $ash ./scripts/download.sh
|
||||
|
||||
# Transformation des données
|
||||
echo $'\n\n#\n# Transformation des données 🏗️\n#\n'
|
||||
eval $npm run transform
|
||||
eval $npm run transform\'
|
||||
eval $ash ./scripts/transform.sh
|
||||
|
||||
echo $'\n\n#\n# Le projet est prêt à être lancé avec Docker 🚀\n#\n'
|
||||
|
@ -2,28 +2,16 @@
|
||||
|
||||
version: "3.8"
|
||||
|
||||
networks:
|
||||
front-end:
|
||||
back-end:
|
||||
driver: bridge
|
||||
|
||||
services:
|
||||
|
||||
postgres:
|
||||
ports:
|
||||
- "5432:5432"
|
||||
networks:
|
||||
- back-end
|
||||
|
||||
postgrest:
|
||||
ports:
|
||||
- "3000:3000"
|
||||
networks:
|
||||
- back-end
|
||||
|
||||
swagger:
|
||||
ports:
|
||||
- "8080:8080"
|
||||
networks:
|
||||
- front-end
|
||||
- back-end
|
||||
|
@ -6,14 +6,26 @@ networks:
|
||||
traefik:
|
||||
name: ${TRAEFIK_NETWORK_NAME:-traefik}
|
||||
external: true
|
||||
opendata:
|
||||
name: ${OPENDATA_NETWORK_NAME:-opendata}
|
||||
|
||||
services:
|
||||
|
||||
postgrest:
|
||||
networks:
|
||||
- traefik
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.docker.network=${TRAEFIK_NETWORK_NAME:-traefik}
|
||||
- traefik.http.routers.${TRAEFIK_ROUTER_NAME:-opendata}_postgrest.rule=Host(`${POSTGREST_DOMAIN:?err}`)
|
||||
- traefik.http.routers.${TRAEFIK_ROUTER_NAME:-opendata}_postgrest.entrypoints=${TRAEFIK_ENTRYPOINTS:-websecure}
|
||||
- traefik.http.routers.${TRAEFIK_ROUTER_NAME:-opendata}_postgrest.tls.certResolver=letsencrypt
|
||||
|
||||
swagger:
|
||||
networks:
|
||||
- traefik
|
||||
- traefik
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.docker.network=${TRAEFIK_NETWORK_NAME:-traefik}
|
||||
- traefik.http.routers.${TRAEFIK_ROUTER_NAME:-opendata}_swagger.rule=Host(`${SWAGGER_DOMAIN:?err}`)
|
||||
- traefik.http.routers.${TRAEFIK_ROUTER_NAME:-opendata}_swagger.entrypoints=${TRAEFIK_ENTRYPOINTS:-websecure}
|
||||
- traefik.http.routers.${TRAEFIK_ROUTER_NAME:-opendata}_swagger.tls.certResolver=letsencrypt
|
||||
- traefik.http.services.${TRAEFIK_ROUTER_NAME:-opendata}_swagger.loadbalancer.server.port=8080
|
||||
|
@ -2,6 +2,10 @@
|
||||
|
||||
version: "3.8"
|
||||
|
||||
networks:
|
||||
opendata:
|
||||
name: ${OPENDATA_NETWORK_NAME:-opendata}
|
||||
|
||||
volumes:
|
||||
postgres:
|
||||
name: ${POSTGRES_VOLUME_NAME:-postgres}
|
||||
@ -23,6 +27,8 @@ services:
|
||||
- "./initdb:/docker-entrypoint-initdb.d"
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
networks:
|
||||
- opendata
|
||||
|
||||
postgrest:
|
||||
container_name: ${POSTGREST_CONTAINER_NAME:-postgrest}
|
||||
@ -38,6 +44,8 @@ services:
|
||||
PGRST_DB_MAX_ROWS: ${PGRST_DB_MAX_ROWS:-100}
|
||||
depends_on:
|
||||
- postgres
|
||||
networks:
|
||||
- opendata
|
||||
|
||||
swagger:
|
||||
container_name: ${SWAGGER_CONTAINER_NAME:-swagger}
|
||||
@ -45,3 +53,7 @@ services:
|
||||
restart: always
|
||||
environment:
|
||||
API_URL: ${POSTGREST_URL:-http://localhost:3000/}
|
||||
depends_on:
|
||||
- postgrest
|
||||
networks:
|
||||
- opendata
|
||||
|
@ -1,4 +1,5 @@
|
||||
{
|
||||
"name": "opendata",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"clean": "rm ./node_modules -rf && rm ./tmp -rf && rm ./initdb/*.csv -rf",
|
||||
|
Reference in New Issue
Block a user