volumes:
  {{ cookiecutter.project_slug }}_local_postgres_data: {}
  {{ cookiecutter.project_slug }}_local_postgres_data_backups: {}
  {% if cookiecutter.use_celery == 'y' %}{{ cookiecutter.project_slug }}_local_redis_data: {}{% endif %}

services:
  django:{% if cookiecutter.use_celery == 'y' %} &django{% endif %}
    build:
      context: .
      dockerfile: ./compose/local/django/Dockerfile
    image: {{ cookiecutter.project_slug }}_local_django
    container_name: {{ cookiecutter.project_slug }}_local_django
    depends_on:
      - postgres
      {%- if cookiecutter.use_celery == 'y' %}
      - redis
      {%- endif %}
      {%- if cookiecutter.use_mailpit == 'y' %}
      - mailpit
      {%- endif %}
    volumes:
      - .:/app:z
    env_file:
      - ./.envs/.local/.django
      - ./.envs/.local/.postgres
    ports:
      - '8000:8000'
    command: /start

  postgres:
    build:
      context: .
      dockerfile: ./compose/production/postgres/Dockerfile
    image: {{ cookiecutter.project_slug }}_production_postgres
    container_name: {{ cookiecutter.project_slug }}_local_postgres
    volumes:
      - {{ cookiecutter.project_slug }}_local_postgres_data:/var/lib/postgresql/data
      - {{ cookiecutter.project_slug }}_local_postgres_data_backups:/backups
    env_file:
      - ./.envs/.local/.postgres

  {%- if cookiecutter.use_mailpit == 'y' %}

  mailpit:
    image: docker.io/axllent/mailpit:latest
    container_name: {{ cookiecutter.project_slug }}_local_mailpit
    ports:
      - "8025:8025"

  {%- endif %}
  {%- if cookiecutter.use_celery == 'y' %}

  redis:
    image: docker.io/redis:6
    container_name: {{ cookiecutter.project_slug }}_local_redis
    {% if cookiecutter.use_celery == 'y' %}
    volumes:
      - {{ cookiecutter.project_slug }}_local_redis_data:/data
    {% endif %}

  celeryworker:
    <<: *django
    image: {{ cookiecutter.project_slug }}_local_celeryworker
    container_name: {{ cookiecutter.project_slug }}_local_celeryworker
    depends_on:
      - redis
      - postgres
      {%- if cookiecutter.use_mailpit == 'y' %}
      - mailpit
      {%- endif %}
    ports: []
    command: /start-celeryworker

  celerybeat:
    <<: *django
    image: {{ cookiecutter.project_slug }}_local_celerybeat
    container_name: {{ cookiecutter.project_slug }}_local_celerybeat
    depends_on:
      - redis
      - postgres
      {%- if cookiecutter.use_mailpit == 'y' %}
      - mailpit
      {%- endif %}
    ports: []
    command: /start-celerybeat

  flower:
    <<: *django
    image: {{ cookiecutter.project_slug }}_local_flower
    container_name: {{ cookiecutter.project_slug }}_local_flower
    ports:
      - '5555:5555'
    command: /start-flower

  {%- endif %}
  {%- if cookiecutter.frontend_pipeline in ['Gulp', 'Webpack'] %}

  node:
    build:
      context: .
      dockerfile: ./compose/local/node/Dockerfile
    image: {{ cookiecutter.project_slug }}_local_node
    container_name: {{ cookiecutter.project_slug }}_local_node
    depends_on:
      - django
    volumes:
      - .:/app:z
      # http://jdlm.info/articles/2016/03/06/lessons-building-node-app-docker.html
      - /app/node_modules
    command: npm run dev
    ports:
      - '3000:3000'
      {%- if cookiecutter.frontend_pipeline == 'Gulp' %}
      # Expose browsersync UI: https://www.browsersync.io/docs/options/#option-ui
      - '3001:3001'
      {%- endif %}

  {%- endif %}
