services:
  api:
    image: <%= projectName %>-app
    volumes:
      - .:/app
      - /app/node_modules
    env_file:
      - .env
    ports:
      - ${SERVER_PORT}:3000
    command: npm run start:dev
    depends_on:
      - migration

  migration:
    build:
      dockerfile: Dockerfile
      context: .
      target: development
    image: <%= projectName %>-app
    command: sh -c "npm run build && npm run prisma:migrate:dev"
    volumes:
      - .:/app
      - /app/node_modules
    env_file:
      - .env
    links:
      - postgres
    depends_on:
      - postgres
      - redis

  postgres:
    image: postgres:15.2
    restart: always
    volumes:
      - postgres:/data/postgres
    ports:
      - 5433:5432
    environment:
      POSTGRES_DB: ${DATABASE_NAME:-test}
      POSTGRES_USER: ${DATABASE_USERNAME:-test}
      POSTGRES_PASSWORD: ${DATABASE_PASSWORD:-secret}
      PGDATA: /data/postgres

  redis:
    image: redis:6
    restart: always
    volumes:
      - redis:/data
    ports:
      - 6379:6379

volumes:
  postgres:
  redis:
