services: web: build: context: . dockerfile: ./frontend/Dockerfile restart: unless-stopped networks: - dwengo-1 labels: - "traefik.enable=true" - "traefik.http.routers.web.rule=PathPrefix(`/`)" - "traefik.http.services.web.loadbalancer.server.port=80" api: build: context: . dockerfile: ./backend/Dockerfile restart: unless-stopped volumes: # TODO Replace with environment keys - ./backend/.env:/app/.env networks: - dwengo-1 depends_on: - db - logging labels: - "traefik.enable=true" - "traefik.http.middlewares.api-prefix.stripprefix.prefixes=/api" - "traefik.http.routers.api.rule=Host(`sel2-1.ugent.be`)" - "traefik.http.routers.api.rule=PathPrefix(`/api`)" - "traefik.http.routers.api.middlewares=api-prefix" - "traefik.http.services.api.loadbalancer.server.port=3000" db: image: postgres:latest environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: postgres restart: unless-stopped volumes: - dwengo_postgres_data:/var/lib/postgresql/data networks: - dwengo-1 reverse-proxy: image: traefik:v3.3 command: > --api.insecure=true --providers.docker=true --providers.docker.exposedbydefault=false --entrypoints.web.address=:80/tcp --entrypoints.web.http.redirections.entryPoint.to=websecure --entrypoints.web.http.redirections.entrypoint.scheme=https --entrypoints.websecure.address=:443/tcp --entrypoints.websecure.http.tls=true --entrypoints.websecure.http.tls.certResolver=letsencrypt --entrypoints.websecure.http.tls.domains[0].main=sel2-1.ugent.be --certificatesresolvers.letsencrypt.acme.email=timo.demeyst@ugent.be --certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json --certificatesresolvers.letsencrypt.acme.httpChallenge=true --certificatesresolvers.letsencrypt.acme.httpChallenge.entrypoint=web ports: - '8080:8080' - '80:80/tcp' - '443:443/tcp' restart: unless-stopped volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - dwengo_letsencrypt:/letsencrypt:ro networks: - dwengo-1 logging: image: grafana/loki:latest ports: - '3102:3102' - '9095:9095' volumes: - ./config/loki/config.yml:/etc/loki/config.yaml - dwengo_loki_data:/loki command: -config.file=/etc/loki/config.yaml restart: unless-stopped networks: - dwengo-1 labels: - "traefik.enable=true" - "traefik.http.middlewares.logging-prefix.stripprefix.prefixes=/logging" - "traefik.http.routers.web.rule=PathPrefix(`/logging`)" - "traefik.http.routers.web.middlewares=logging-prefix" - "traefik.http.services.web.loadbalancer.server.port=3102" dashboards: image: grafana/grafana:latest ports: - '3100:3000' volumes: - dwengo_grafana_data:/var/lib/grafana restart: unless-stopped networks: - dwengo-1 volumes: dwengo_postgres_data: dwengo_letsencrypt: dwengo_loki_data: dwengo_grafana_data: networks: dwengo-1: