This commit is contained in:
2025-10-14 07:31:52 +02:00
parent 8bccc34b77
commit 681db082fb
4 changed files with 94 additions and 10 deletions

View File

@@ -1,7 +1,7 @@
### Construire l'image ### Construire l'image
```shell ```shell
docker build -t iut/pgsql:2025-12 . docker build -t iut/pgsql:2025-12 -f postgresql.Dockerfile .
``` ```
## Données ## Données
@@ -33,7 +33,45 @@ psql -h 127.0.0.1 -d sql -U sql -c "\copy (select id, source, target, cost, reve
- https://www.kaggle.com/datasets/alexandrelemercier/food-detailed-nutritional-content - https://www.kaggle.com/datasets/alexandrelemercier/food-detailed-nutritional-content
### Proxy ## Proxy inverse
Un proxy inverse (ou reverse proxy) est un service intermédiaire placé entre les utilisateurs et les applications web internes. Il reçoit les requêtes HTTP/HTTPS et les redirige automatiquement vers le bon service backend, souvent sur un autre port ou un autre conteneur.
Il permet notamment :
- davoir un seul point dentrée pour plusieurs services ;
- de simplifier les URLs (par exemple pgadmin.localhost au lieu de localhost:5050) ;
- de gérer les certificats TLS/HTTPS automatiquement ;
- dassurer la découverte automatique et le load balancing entre conteneurs.
Les solutions pour réaliser un reverse proxy sont généralement [Traefik](https://traefik.io/traefik), [Nginx Proxy Manager](https://nginxproxymanager.com/) et [Caddy](https://caddyserver.com/).
**Caddy** se démarque par sa grande simplicité : il se configure presque entièrement à partir de labels Docker et gère automatiquement la création de certificat HTTPS, ce qui le rend idéal pour les environnements de développement ou les projets personnels.
**Traefik**, de son côté, est plus complet et mieux adapté aux environnements de production complexes : il offre un tableau de bord intégré, une gestion fine du routage, et sintègre parfaitement avec des orchestrateurs comme Docker Swarm ou Kubernetes.
**Nginx Proxy Manager** propose une approche visuelle grâce à son interface web dadministration. Il est apprécié des utilisateurs qui préfèrent tout configurer par le navigateur, mais il reste moins automatisé que Caddy et moins flexible que Traefik pour les infrastructures dynamiques.
```yaml
caddy:
image: lucaslorentz/caddy-docker-proxy:2.10
restart: "no"
ports:
- "80:80"
- "443:443/tcp"
- "443:443/udp"
- "2019:2019"
networks:
- caddy_net
environment:
CADDY_INGRESS_NETWORKS: ${COMPOSE_PROJECT_NAME}_caddy_net
CADDY_ADMIN: "0.0.0.0:2019"
volumes:
- ./data:/usr/share/caddy
- /var/run/docker.sock:/var/run/docker.sock:ro
labels:
caddy_admin: "on"
```c
### Administration ### Administration
@@ -43,5 +81,13 @@ Cest léquivalent dun « phpMyAdmin » pour MySQL, mais conçu pour Pos
### PostGraphile ### PostGraphile
```shell ```shell
docker build -t iut/postgraphile:2025-12 ./postgraphile docker build -t iut/postgraphile:2025-12 -f postgraphile.Dockerfile .
```
### Podman
```shell
sudo ausearch -c "caddy" --raw | audit2allow -M my-caddy
sudo semodule -i my-caddy.pp
``` ```

View File

@@ -12,23 +12,26 @@ services:
image: lucaslorentz/caddy-docker-proxy:2.10 image: lucaslorentz/caddy-docker-proxy:2.10
restart: "no" restart: "no"
ports: ports:
- "8000:8000" - "80:80"
- "8443:8443/tcp" - "443:443/tcp"
- "8443:8443/udp" - "443:443/udp"
- "2019:2019" - "2019:2019"
networks: networks:
- caddy_net - caddy_net
environment: environment:
CADDY_INGRESS_NETWORKS: ${COMPOSE_PROJECT_NAME}_caddy_net CADDY_INGRESS_NETWORKS: ${COMPOSE_PROJECT_NAME}_caddy_net
CADDY_DOCKER_ADMIN_API: "true"
CADDY_ADMIN: "0.0.0.0:2019"
volumes: volumes:
- ./data:/usr/share/caddy - ./data:/usr/share/caddy
#- /var/run/docker.sock:/var/run/docker.sock:ro - /var/run/docker.sock:/var/run/docker.sock:ro
- /run/user/1000/podman/podman.sock:/var/run/docker.sock:Z
labels: labels:
caddy_admin: "on" caddy_admin: "2019"
whoami: whoami:
image: traefik/whoami image: traefik/whoami
depends_on:
- caddy
networks: networks:
- caddy_net - caddy_net
labels: labels:
@@ -192,7 +195,7 @@ services:
- PGHOST=${POSTGRAPHILE_HOST:-postgresql} - PGHOST=${POSTGRAPHILE_HOST:-postgresql}
- PGPORT=${POSTGRAPHILE_DB_PORT:-5432} - PGPORT=${POSTGRAPHILE_DB_PORT:-5432}
- PGUSER=${POSTGRAPHILE_DB_USER:-postgraphile} - PGUSER=${POSTGRAPHILE_DB_USER:-postgraphile}
- PGPASSWORD=${DB_PASSWORD} - PGPASSWORD=${DB_PASSWORD:-!ChangeMe!}
- PGDATABASE=${COMPOSE_PROJECT_NAME} - PGDATABASE=${COMPOSE_PROJECT_NAME}
profiles: profiles:
- api2 - api2

View File

@@ -0,0 +1,19 @@
apiVersion: 1
datasources:
- name: VentdEst
type: postgres
url: postgresql:5432
user: ventdest
editable: true
secureJsonData:
password: motdepasse
jsonData:
database: ventdest
sslmode: disable # disable/require/verify-ca/verify-full
maxOpenConns: 50 # Grafana v5.4+
maxIdleConns: 50 # Grafana v5.4+
maxIdleConnsAuto: true # Grafana v9.5.1+
connMaxLifetime: 3600 # Grafana v5.4+
postgresVersion: 1500 # 903=9.3, 904=9.4, 905=9.5, 906=9.6, 1000=10
timescaledb: false

View File

@@ -0,0 +1,16 @@
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
url: http://prometheus:9090
orgId: 1
isDefault: true
access: proxy
editable: true
jsonData:
httpMethod: POST
prometheusType: Prometheus
prometheusVersion: 2.50.0
# http://localhost/grafana/api/datasources