diff --git a/.env.template b/.env.template index d9b2c34..9b7a86b 100644 --- a/.env.template +++ b/.env.template @@ -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 diff --git a/docker-compose.local.yml b/docker-compose.local.yml index 9e60f22..5b4ca75 100644 --- a/docker-compose.local.yml +++ b/docker-compose.local.yml @@ -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 diff --git a/docker-compose.traefik.yml b/docker-compose.traefik.yml index b29bddd..6f40321 100644 --- a/docker-compose.traefik.yml +++ b/docker-compose.traefik.yml @@ -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 \ No newline at end of file + - 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 diff --git a/docker-compose.yml b/docker-compose.yml index 70a15ec..a99769b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -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 diff --git a/package.json b/package.json index 8bcf699..c0c00f0 100644 --- a/package.json +++ b/package.json @@ -1,4 +1,5 @@ { + "name": "opendata", "type": "module", "scripts": { "clean": "rm ./node_modules -rf && rm ./tmp -rf && rm ./initdb/*.csv -rf",