version: '3'
services:

  backend:
    build: ./backend
    ports:
      - "${BACKEND_PORT}:8080"
    volumes:
      - ./backend:/opt/app
      - ./log:/opt/log
    links:
      - mongo
      - redis
    stdin_open: true
    tty: true

  frontend:
    build: ./frontend
    ports:
      - "${FRONTEND_PORT}:80"
    volumes:
      - ./frontend:/opt/app
      - /opt/app/node_modules/
    environment:
      - FRONTEND_MODE=${FRONTEND_MODE}

  mongo:
    image: mongo:4.0
    ports:
      - "${MONGO_PORT}:27017"
    environment:
      - MONGO_INITDB_ROOT_USERNAME=admin
      - MONGO_INITDB_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD}
      - MONGO_INITDB_DATABASE=musare
      - MONGO_PORT=${MONGO_PORT}
      - MONGO_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD}
      - MONGO_USER_USERNAME=${MONGO_USER_USERNAME}
      - MONGO_USER_PASSWORD=${MONGO_USER_PASSWORD}
    volumes:
      - ./tools/docker/setup-mongo.sh:/docker-entrypoint-initdb.d/setup-mongo.sh

  mongoclient:
    image: mongoclient/mongoclient
    ports:
      - "${MONGOCLIENT_PORT}:3000"
    environment:
      - MONGOCLIENT_DEFAULT_CONNECTION_URL=mongodb://${MONGO_USER_USERNAME}:${MONGO_USER_PASSWORD}@mongo:27017/musare

  redis:
    image: redis
    command: "--notify-keyspace-events Ex --requirepass ${REDIS_PASSWORD} --appendonly yes"
    volumes:
      - .redis:/data
    ports:
      - "${REDIS_PORT}:6379"