version: "3.7"

services:

  db:
    image: postgres:12.0
    env_file: .env
    environment:
      - "POSTGRES_HOST_AUTH_METHOD=trust"
    networks:
      - backend
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    ports:
      - "$PGPORT:5432"

  redis:
    image: "redis:alpine"
    networks:
      - backend
    volumes:
      - redis_data:/data

  web:
    build:
      context: .
      dockerfile: docker/Dockerfile
    command: [ "/bin/bash", "/code/docker/compose-start.sh" ]
    depends_on:
      - db
      - redis
    environment:
      - "LOCAL_DEVELOPMENT=true"
      - "DOCKER_DIR=/code/docker"
      - "PYTHON=python"
      - "WEB_PORT=8000"
    env_file:
      - .env
    init: true
    networks:
      - backend
      - frontend
    ports:
      - "8000:8000"
    volumes:
      - .:/code
      - ../website2022/:/website
    stop_signal: SIGKILL

  # mailman-core:
  #   image: maxking/mailman-core
  #   stop_grace_period: 5s
  #   ports:
  #     - "8001:8001" # API
  #     - "8024:8024" # LMTP - incoming emails
  #   volumes:
  #     - ./mailman/core:/opt/mailman/
  #   networks:
  #     - backend
  #   env_file:
  #     - .env
  #   depends_on:
  #     - db

  # mailman-web:
  #   image: maxking/mailman-web
  #   entrypoint: /opt/mailman-docker/compose-start.sh
  #   env_file:
  #     - .env
  #   environment:
  #     - "DOCKER_DIR=/opt/mailman-docker"
  #     - "PYTHON=python3"
  #     - "WEB_PORT=8008"
  #   depends_on:
  #     - redis
  #     - db
  #   stop_signal: SIGKILL
  #   ports:
  #     - "8008:8008" # HTTP
  #     - "8080:8080" # uwsgi
  #   volumes:
  #     - .:/code
  #     - ./mailman/web:/opt/mailman-web-data
  #     - ./docker:/opt/mailman-docker
  #   networks:
  #     - backend

  celery-worker:
    build:
      context: .
      dockerfile: docker/Dockerfile
    command:
      - /bin/bash
      - -c
      - |
        /code/docker/wait-for-it.sh -h web -p 8000 -t 20 -- celery -A config worker --concurrency=10 --loglevel=debug
    networks:
      - backend
    env_file:
      - .env
    depends_on:
      - db
      - redis
    volumes:
      - .:/code

  celery-beat:
    build:
      context: .
      dockerfile: docker/Dockerfile
    command: [ "celery", "-A", "config", "beat", "--loglevel=debug" ]
    env_file:
      - .env
    depends_on:
      - db
      - redis
    networks:
      - backend
    volumes:
      - .:/code
    stop_signal: SIGKILL

  maildev:
    image: maildev/maildev
    init: true
    ports:
      - "1025:1025"
      - "1080:1080"
    networks:
      - backend
    stop_signal: SIGKILL

networks:
  backend:
  frontend:


volumes:
  postgres_data:
  redis_data:
