version: '2'

volumes:
  postgres_data: {}
  postgres_backup: {}
  caddy: {}

services:
  django:{% if cookiecutter.use_celery == 'y' %} &django{% endif %}
    build:
      context: .
      dockerfile: ./compose/production/django/Dockerfile
    image: {{ cookiecutter.project_slug }}_production_django
    depends_on:
      - postgres
      - redis
    env_file:
      - ./.envs/.production/.django
      - ./.envs/.production/.postgres
    command: /start

  postgres:
    build:
      context: .
      dockerfile: ./compose/production/postgres/Dockerfile
    image: {{ cookiecutter.project_slug }}_production_postgres
    volumes:
      - postgres_data:/var/lib/postgresql/data
      - postgres_backup:/backups
    env_file:
      - ./.envs/.production/.postgres

  caddy:
    build:
      context: .
      dockerfile: ./compose/production/caddy/Dockerfile
    image: {{ cookiecutter.project_slug }}_production_caddy
    depends_on:
      - django
    volumes:
      - caddy:/root/.caddy
    env_file:
      - ./.envs/.production/.caddy
    ports:
      - "0.0.0.0:80:80"
      - "0.0.0.0:443:443"

  redis:
    image: redis:3.2
  {%- if cookiecutter.use_celery == 'y' %}

  celeryworker:
    <<: *django
    image: {{ cookiecutter.project_slug }}_production_celeryworker
    depends_on:
     - postgres
     - redis
    env_file:
      - ./.envs/.production/.django
      - ./.envs/.production/.postgres
    command: /start-celeryworker

  celerybeat:
    <<: *django
    image: {{ cookiecutter.project_slug }}_production_celerybeat
    depends_on:
      - postgres
      - redis
    env_file:
      - ./.envs/.production/.django
      - ./.envs/.production/.postgres
    command: /start-celerybeat

  {%- endif %}
