services:
  backend:
    restart: unless-stopped
    networks:
      - default
      - traefik
      - db
    volumes:
      - /mnt/data/feo-homepage/static:/app/static
      - /mnt/data/feo-homepage/media:/app/media
    labels:
      - traefik.enable=true
      - traefik.docker.network=traefik
      - traefik.http.routers.feohomepage.entrypoints=websecure
      - traefik.http.routers.feohomepage.rule=Host(`feoneu.asw.io`)
      - traefik.http.routers.feohomepage.tls.certresolver=hetzner
      - traefik.http.services.feohomepage.loadbalancer.server.port=8000

  manage:
    restart: no
    volumes:
      - /mnt/data/feo-homepage/static:/app/static
      - /mnt/data/feo-homepage/media:/app/media
    networks:
      - default
      - db

  celery:
    restart: unless-stopped
    volumes:
      - /mnt/data/feo-homepage/static:/app/static
      - /mnt/data/feo-homepage/media:/app/media

  nginx:
    image: nginx:1.23
    volumes:
      - /mnt/data/feo-homepage/static:/usr/share/nginx/html/static:ro
      - /mnt/data/feo-homepage/media:/usr/share/nginx/html/media:ro
    networks:
      - traefik
    labels:
      - traefik.enable=true
      - traefik.docker.network=traefik
      - traefik.http.routers.feohomepagestatic.entrypoints=websecure
      - traefik.http.routers.feohomepagestatic.rule=Host(`feoneu.asw.io`) && (PathPrefix(`/static`) || PathPrefix(`/media`))
      - traefik.http.routers.feohomepagestatic.tls.certresolver=hetzner
      - traefik.http.services.feohomepagestatic.loadbalancer.server.port=80
    restart: unless-stopped

networks:
  default:
  traefik:
    external: true
    name: traefik
  db:
    external: true
    name: db