2026-05-08 12:17:03 +02:00
|
|
|
services:
|
|
|
|
|
consumer:
|
2026-05-11 21:09:49 +02:00
|
|
|
build: ./backend
|
2026-05-10 12:36:38 +02:00
|
|
|
image: simugaz/backend:latest
|
|
|
|
|
command: consumer.py
|
2026-05-08 12:38:40 +02:00
|
|
|
restart: unless-stopped
|
|
|
|
|
networks:
|
|
|
|
|
- lora-gateway_mqtt
|
2026-05-08 17:02:06 +02:00
|
|
|
- database
|
2026-05-13 18:38:50 +02:00
|
|
|
env_file: env_files/consumer.env
|
2026-05-08 17:02:06 +02:00
|
|
|
|
2026-05-10 12:36:38 +02:00
|
|
|
api:
|
2026-05-11 21:09:49 +02:00
|
|
|
build: ./backend
|
2026-05-10 12:36:38 +02:00
|
|
|
image: simugaz/backend:latest
|
|
|
|
|
command: api.py
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
networks:
|
2026-05-30 18:02:32 +02:00
|
|
|
- traefik
|
2026-05-10 12:36:38 +02:00
|
|
|
- database
|
2026-05-13 18:38:50 +02:00
|
|
|
env_file: env_files/api.env
|
2026-05-30 18:02:32 +02:00
|
|
|
labels:
|
|
|
|
|
- traefik.enable=true
|
2026-05-30 19:44:52 +02:00
|
|
|
- traefik.http.services.api-simugaz.loadbalancer.server.port=8000
|
|
|
|
|
- traefik.http.routers.api-simugaz-https.rule=Host(`api.agreg.ungol.fr`)
|
|
|
|
|
- traefik.http.routers.api-simugaz-https.entrypoints=websecure
|
|
|
|
|
- traefik.http.routers.api-simugaz-https.tls=true
|
|
|
|
|
- traefik.http.routers.api-simugaz-https.tls.certresolver=letsencrypt
|
|
|
|
|
- traefik.http.routers.api-simugaz-https.service=api-simugaz
|
2026-05-10 12:36:38 +02:00
|
|
|
|
2026-05-11 21:47:57 +02:00
|
|
|
webui:
|
|
|
|
|
build: ./frontend
|
|
|
|
|
image: simugaz/frontend:latest
|
2026-05-12 14:46:25 +02:00
|
|
|
restart: unless-stopped
|
2026-05-11 21:47:57 +02:00
|
|
|
networks:
|
2026-05-30 18:02:32 +02:00
|
|
|
- traefik
|
2026-05-11 21:47:57 +02:00
|
|
|
depends_on:
|
|
|
|
|
- api
|
2026-05-30 18:02:32 +02:00
|
|
|
labels:
|
|
|
|
|
- traefik.enable=true
|
2026-05-30 19:44:52 +02:00
|
|
|
- traefik.http.services.webui.loadbalancer.server.port=80
|
|
|
|
|
- traefik.http.routers.webui-https.rule=Host(`demo.agreg.ungol.fr`)
|
|
|
|
|
- traefik.http.routers.webui-https.entrypoints=websecure
|
|
|
|
|
- traefik.http.routers.webui-https.tls=true
|
|
|
|
|
- traefik.http.routers.webui-https.tls.certresolver=letsencrypt
|
|
|
|
|
- traefik.http.routers.webui-https.service=webui
|
2026-05-11 21:47:57 +02:00
|
|
|
|
2026-05-08 17:02:06 +02:00
|
|
|
db:
|
|
|
|
|
image: postgres:18-alpine
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
volumes:
|
2026-05-09 18:21:45 +02:00
|
|
|
- ./initdb:/docker-entrypoint-initdb.d:ro
|
2026-05-08 17:02:06 +02:00
|
|
|
- db:/var/lib/postgresql
|
|
|
|
|
networks:
|
|
|
|
|
- database
|
2026-05-13 18:38:50 +02:00
|
|
|
env_file: env_files/db.env
|
|
|
|
|
|
2026-05-08 17:02:06 +02:00
|
|
|
|
|
|
|
|
pgadmin:
|
|
|
|
|
image: dpage/pgadmin4:latest
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
ports:
|
|
|
|
|
- 8081:80
|
|
|
|
|
networks:
|
|
|
|
|
- public
|
|
|
|
|
- database
|
|
|
|
|
volumes:
|
|
|
|
|
- ./servers.json:/pgadmin4/servers.json
|
2026-05-13 18:38:50 +02:00
|
|
|
env_file: env_files/pgadmin.env
|
2026-05-30 18:02:32 +02:00
|
|
|
|
|
|
|
|
traefik:
|
|
|
|
|
image: traefik:3
|
|
|
|
|
command:
|
|
|
|
|
- "--api=false"
|
|
|
|
|
- "--api.dashboard=false"
|
|
|
|
|
- "--api.insecure=false"
|
|
|
|
|
- "--providers.docker=true"
|
|
|
|
|
- "--providers.docker.exposedbydefault=false"
|
|
|
|
|
- "--providers.docker.network=traefik_public"
|
|
|
|
|
- "--providers.file=true"
|
|
|
|
|
- "--providers.file.directory=/rules"
|
|
|
|
|
- "--providers.file.watch=true"
|
|
|
|
|
- "--entryPoints.web.address=:80"
|
|
|
|
|
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
|
|
|
|
|
- "--entrypoints.web.http.redirections.entryPoint.scheme=https"
|
|
|
|
|
- "--entryPoints.websecure.address=:443"
|
|
|
|
|
- "--entrypoints.websecure.http3={}"
|
|
|
|
|
- "--certificatesresolvers.letsencrypt.acme.dnschallenge=true"
|
|
|
|
|
- "--certificatesresolvers.letsencrypt.acme.dnschallenge.provider=ovh"
|
|
|
|
|
- "--certificatesresolvers.letsencrypt.acme.dnschallenge.delayBeforeCheck=0"
|
|
|
|
|
- "--certificatesresolvers.letsencrypt.acme.caserver=https://acme-v02.api.letsencrypt.org/directory"
|
|
|
|
|
- "--certificatesresolvers.letsencrypt.acme.email="
|
|
|
|
|
- "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
|
|
|
|
|
env_file: env_files/traefik.env
|
|
|
|
|
networks:
|
|
|
|
|
- traefik
|
|
|
|
|
- public
|
|
|
|
|
ports:
|
|
|
|
|
- 80:80
|
|
|
|
|
- 443:443
|
|
|
|
|
volumes:
|
|
|
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
|
|
|
- certificates:/letsencrypt:rw
|
|
|
|
|
|
2026-05-08 17:02:06 +02:00
|
|
|
volumes:
|
2026-05-30 18:02:32 +02:00
|
|
|
certificates:
|
2026-05-08 17:02:06 +02:00
|
|
|
db:
|
2026-05-08 12:38:40 +02:00
|
|
|
|
|
|
|
|
networks:
|
2026-05-08 17:02:06 +02:00
|
|
|
public:
|
|
|
|
|
database:
|
|
|
|
|
internal: true
|
2026-05-08 12:38:40 +02:00
|
|
|
lora-gateway_mqtt:
|
2026-05-30 18:02:32 +02:00
|
|
|
external: true
|
|
|
|
|
traefik:
|
|
|
|
|
internal: true
|