version: "3"

services:
  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
    ports:
      - "80:80"
    volumes:
      - ./:/home/mediacms.io/mediacms/
    depends_on:
      redis:
        condition: service_healthy
      db:
        condition: service_healthy
  selenium_hub:
    container_name: selenium_hub
    image: selenium/hub
    ports:
      - "4444:4444"
  selenium_chrome:
    container_name: selenium_chrome
    image: selenium/node-chrome-debug
    environment:
      - HUB_PORT_4444_TCP_ADDR=selenium_hub
      - HUB_PORT_4444_TCP_PORT=4444
    ports:
      - "5900:5900"
    depends_on:
      - selenium_hub
  db:
    image: postgres
    volumes:
      - ../postgres_data:/var/lib/postgresql/data/
    restart: always
    environment:
      POSTGRES_USER: mediacms
      POSTGRES_PASSWORD: mediacms
      POSTGRES_DB: mediacms
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U mediacms"]
      interval: 10s
      timeout: 5s
      retries: 5
  redis:
    image: "redis:alpine"
    restart: always
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 30s
      timeout: 10s
      retries: 3
