agreg-server/server/docker-compose.yml

114 lines
No EOL
3.2 KiB
YAML

services:
consumer:
build: ./backend
image: simugaz/backend:latest
command: consumer.py
restart: unless-stopped
networks:
- lora-gateway_mqtt
- database
env_file: env_files/consumer.env
api:
build: ./backend
image: simugaz/backend:latest
command: api.py
restart: unless-stopped
networks:
- traefik
- database
env_file: env_files/api.env
labels:
- traefik.enable=true
- traefik.http.services.homer.loadbalancer.server.port=8000
- traefik.http.routers.homer-https.rule=Host(`api.agreg.ungol.fr`)
- traefik.http.routers.homer-https.entrypoints=websecure
- traefik.http.routers.homer-https.tls=true
- traefik.http.routers.homer-https.tls.certresolver=letsencrypt
webui:
build: ./frontend
image: simugaz/frontend:latest
restart: unless-stopped
networks:
- traefik
depends_on:
- api
labels:
- traefik.enable=true
- traefik.http.services.homer.loadbalancer.server.port=80
- traefik.http.routers.homer-https.rule=Host(`demo.agreg.ungol.fr`)
- traefik.http.routers.homer-https.entrypoints=websecure
- traefik.http.routers.homer-https.tls=true
- traefik.http.routers.homer-https.tls.certresolver=letsencrypt
db:
image: postgres:18-alpine
restart: unless-stopped
volumes:
- ./initdb:/docker-entrypoint-initdb.d:ro
- db:/var/lib/postgresql
networks:
- database
env_file: env_files/db.env
pgadmin:
image: dpage/pgadmin4:latest
restart: unless-stopped
ports:
- 8081:80
networks:
- public
- database
volumes:
- ./servers.json:/pgadmin4/servers.json
env_file: env_files/pgadmin.env
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
- ./config/rules:/rules:ro
- certificates:/letsencrypt:rw
volumes:
certificates:
db:
networks:
public:
database:
internal: true
lora-gateway_mqtt:
external: true
traefik:
internal: true