version: "3.8"

services:
  nginx:
    container_name: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 80:80
    depends_on:
      - plane-web
      - plane-api
  db:
    image: postgres:15.2-alpine
    container_name: db
    restart: always
    volumes:
      - pgdata:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: plane
      POSTGRES_DB: plane
      POSTGRES_PASSWORD: xyzzyspoon
      PGDATA : /var/lib/postgresql/data
    command: postgres -c 'max_connections=1000'
    ports:
      - 5432:5432
  redis:
    image: redis:6.2.7-alpine
    container_name: redis
    restart: always
    ports:
      - 6379:6379
    volumes:
      - redisdata:/data
  plane-web:
    container_name: planefrontend
    build:
      context: .
      dockerfile: ./apps/app/Dockerfile.web
    restart: always
    command:  node apps/app/server.js
    env_file:
      - ./apps/app/.env
    ports:
      - 3000:3000
  plane-api:
    container_name: planebackend
    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:
    container_name: planerqworker
    build:
      context: ./apiserver
      dockerfile: Dockerfile.api
    depends_on:
      - redis
      - db
      - plane-api
    command: ./bin/worker
    links:
      - redis:redis
      - db:db
    env_file:
      - ./apiserver/.env
volumes:
  pgdata:
  redisdata:
