version: "3"

services:
  migrations:
    build:
      context: .
      dockerfile: ./Dockerfile-dev
    image: mediacms/mediacms-dev:latest
    volumes:
      - ./:/home/mediacms.io/mediacms/
    command: "python manage.py migrate"
    environment:
      DEVELOPMENT_MODE: "True"
    restart: on-failure
    depends_on:
      redis:
        condition: service_healthy
      db:
        condition: service_healthy
  frontend:
    image: node:14
    volumes:
      - ${PWD}/frontend:/home/mediacms.io/mediacms/frontend/
    working_dir: /home/mediacms.io/mediacms/frontend/
    command: bash -c "npm install && npm run start"
    env_file:
      - ${PWD}/frontend/.env
    ports:
      - "8088:8088"
    depends_on:
      - web
  web:
    build:
      context: .
      dockerfile: ./Dockerfile-dev
    image: mediacms/mediacms-dev:latest
    command: "python manage.py runserver 0.0.0.0:80"
    environment:
      DEVELOPMENT_MODE: "True"
      ADMIN_USER: 'admin'
      ADMIN_PASSWORD: 'admin'
      ADMIN_EMAIL: 'admin@localhost'
    ports:
      - "80:80"
    volumes:
      - ./:/home/mediacms.io/mediacms/
    depends_on:
      - migrations
  db:
    image: postgres:15.2-alpine
    volumes:
      - ../postgres_data:/var/lib/postgresql/data/
    restart: always
    environment:
      POSTGRES_USER: mediacms
      POSTGRES_PASSWORD: mediacms
      POSTGRES_DB: mediacms
      TZ: Europe/London
    healthcheck:
      test: ["CMD-SHELL", "pg_isready", "--host=db", "--dbname=$POSTGRES_DB", "--username=$POSTGRES_USER"]
      interval: 10s
      timeout: 5s
      retries: 5
  redis:
    image: "redis:alpine"
    restart: always
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 30s
      timeout: 10s
      retries: 3
  celery_worker:
    image: mediacms/mediacms-dev:latest
    deploy:
      replicas: 1
    volumes:
      - ./:/home/mediacms.io/mediacms/
    environment:
      ENABLE_UWSGI: 'no'
      ENABLE_NGINX: 'no'
      ENABLE_CELERY_BEAT: 'no'
      ENABLE_MIGRATIONS: 'no'
    depends_on:
      - web
