services:
  echoes_of_the_ashes_db:
    image: postgres:15
    container_name: echoes_of_the_ashes_db
    restart: unless-stopped
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
    volumes:
      - echoes-postgres-data:/var/lib/postgresql/data
    networks:
      - default_docker
    #ports:
      # Optional: expose port to host for debugging with a DB client
      # - "5432:5432"

  echoes_of_the_ashes_bot:
    build: .
    container_name: echoes_of_the_ashes_bot
    restart: unless-stopped
    env_file:
      - .env
    volumes:
      - ./gamedata:/app/gamedata:rw
      - ./images:/app/images:ro
    depends_on:
      - echoes_of_the_ashes_db
    networks:
      - default_docker

  echoes_of_the_ashes_map:
    build:
      context: .
      dockerfile: Dockerfile.map
    container_name: echoes_of_the_ashes_map
    restart: unless-stopped
    env_file:
      - .env
    volumes:
      - ./gamedata:/app/gamedata:rw
      - ./images:/app/images:rw
      - /var/run/docker.sock:/var/run/docker.sock:ro
    ports:
      - 8080:8080
    networks:
      - default_docker
      - traefik
    labels:
        - traefik.enable=true
        - traefik.http.routers.echoesoftheash-http.entrypoints=web
        - traefik.http.routers.echoesoftheash-http.rule=Host(`echoesoftheash.patacuack.net`)
        - traefik.http.routers.echoesoftheash-http.middlewares=https-redirect@file
        - traefik.http.routers.echoesoftheash.entrypoints=websecure
        - traefik.http.routers.echoesoftheash.rule=Host(`echoesoftheash.patacuack.net`)
        - traefik.http.routers.echoesoftheash.tls=true
        - traefik.http.routers.echoesoftheash.tls.certResolver=production
        - traefik.http.services.echoesoftheash.loadbalancer.server.port=8080

volumes:
  echoes-postgres-data:
    name: echoes-of-the-ashes-postgres-data

networks:
  default_docker:
    external: true
    name: default_docker
  traefik:
    external: true
    name: traefik