version: "3.8"

services:
  db:
    image: postgres:12-alpine
    restart: always
    volumes:
      - pgdata:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: plane
      POSTGRES_DB: plane
      POSTGRES_PASSWORD: plane
    command: postgres -c 'max_connections=1000'
    ports:
      - "5432:5432"

  redis:
    image: redis:6.2.7-alpine
    restart: always
    ports:
      - "6379:6379"
    volumes:
      - redisdata:/data

  plane-web:
    image: plane-web
    container_name: plane-frontend
    build:
      context: .
      dockerfile: ./apps/app/Dockerfile.web
    restart: always
    env_file:
      - ./apps/app/.env
    ports:
      - 3000:3000

  plane-api:
    image: plane-api
    container_name: plane-backend
    build:
      context: ./apiserver
      dockerfile: Dockerfile.api
    restart: always
    ports:
      - 8000:8000
    env_file:
      - ./apiserver/.env

    depends_on:
      - db
      - redis
    command: ./bin/takeoff
    links:
      - db:db
      - redis:redis

  plane-worker:
    image: plane-api
    container_name: plane-rqworker
    depends_on:
      - redis
      - db
      - plane-api
    command: ./bin/worker
    links:
      - redis:redis
      - db:db
    env_file:
      - ./apiserver/.env

volumes:
  pgdata:
  redisdata: