version: '3.3'

services:
  redis:
    image: redis
    container_name: "konova-redis-cache"
    volumes:
      - /redis/data:/bitnami/redis/data
    environment:
      - REDIS_PASSWORD=CHANGE_ME

  konova:
    external_links:
      - postgis:db
      - arnova-nginx-server:arnova
    build: .
    container_name: "konova-docker"
    command: gunicorn konova.wsgi:application --bind 0.0.0.0:8000
    volumes:
      - .:/konova
      - konova_uploaded_files:/konova_uploaded_files
      - static_file_volume:/konova/static  # Point to the volume for static files. Shared with nginx service
    expose:
      - 8000
    depends_on:
      - redis
    environment:
      - POSTGRES_NAME=konova
      - POSTGRES_PORT=5432
      - POSTGRES_PASSWORD=CHANGE_ME
      - POSTGRES_USER=konova
      - POSTGRES_HOST=db
      - REDIS_HOST=redis
      - SSO_HOST=CHANGE_ME_TO_SSO_HOST_URL
      - SMTP_HOST=172.17.0.1
      - SMTP_PORT=25
      - SMTP_REAL_REPLY_MAIL=ksp-servicestelle@sgdnord.rlp.de

# To provide a celery worker instance, we need to add the celery worker as an own service
  celery_worker:
    external_links:
      - postgis:db
      - arnova-nginx-server:arnova
    build: .
    container_name: "konova-worker-docker"
    command: celery -A konova worker -l INFO
    volumes:
      - .:/konova
      - konova_uploaded_files:/konova_uploaded_files
    depends_on:
      - konova
    environment:
      - POSTGRES_NAME=konova
      - POSTGRES_PORT=5432
      - POSTGRES_PASSWORD=CHANGE_ME
      - POSTGRES_USER=konova
      - POSTGRES_HOST=db
      - REDIS_HOST=redis
      - SSO_HOST=CHANGE_ME_TO_SSO_HOST_URL
      - SMTP_HOST=172.17.0.1
      - SMTP_PORT=25
      - SMTP_REAL_REPLY_MAIL=ksp-servicestelle@sgdnord.rlp.de

  nginx:
    build: ./nginx
    container_name: "konova-nginx-server"
    ports:
      - "1337:80"
    depends_on:
      - konova
    volumes:
      - static_file_volume:/konova/static  # Point to the volume for static files. Shared with konova service

# Instead of an own, new network, we need to connect to the existing one, which is provided by the postgis container
# NOTE: THIS NETWORK MUST EXIST
networks:
  default:
    external:
      name: postgis_nat_it_backend

volumes:
  static_file_volume:
  konova_uploaded_files: