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:
      - mariadb
    depends_on:
      - mariadb
      - redis

  mariadb:
    image: mariadb:10.7
    restart: always
    volumes:
      - mariadb:/var/lib/mysql
    ports:
      - 3307:3306
    environment:
      MYSQL_ROOT_PASSWORD: ${DATABASE_PASSWORD:-secret}
      MYSQL_DATABASE: ${DATABASE_NAME:-test}
      MYSQL_USER: ${DATABASE_USERNAME:-test}
      MYSQL_PASSWORD: ${DATABASE_PASSWORD:-secret}

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

volumes:
  mariadb:
  redis:
