services:
  mongo:
    image: mongo:6.0
    restart: always
    container_name: rocketchat-mongodb
    command: mongod --replSet rs0 --oplogSize 128
    user: "1000:1000"
    environment:
      - MONGO_INITDB_ROOT_USERNAME=rocketchat
      - MONGO_INITDB_ROOT_PASSWORD=${ROCKETCHAT_MONGO_PASSWORD}
    volumes:
      - /mnt/storagebox_alpha/rocketchat/mongo/db:/data/db
    networks:
      - rocketchat

  mongo-init-replica:
    image: mongo:6.0
    restart: "no"
    container_name: rocketchat-mongo-init
    user: "1000:1000"
    command: >
      bash -c "sleep 10 && mongosh --host mongo --eval \"rs.initiate({ _id: 'rs0', members: [ { _id: 0, host: 'mongo:27017' } ]})\" && exit 0"
    networks:
      - rocketchat

  rocketchat:
    image: rocket.chat:latest
    restart: always
    container_name: rocketchat
    environment:
      - PORT=3000
      - ROOT_URL=https://rocketchat.systemsobscure.net
      - MONGO_URL=mongodb://rocketchat:${ROCKETCHAT_MONGO_PASSWORD}@mongo:27017/rocketchat?replicaSet=rs0&authSource=admin
      - MONGO_OPLOG_URL=mongodb://rocketchat:${ROCKETCHAT_MONGO_PASSWORD}@mongo:27017/local?replicaSet=rs0&authSource=admin
      - DEPLOY_METHOD=docker
      - STATISTICS_COLLECTION=false
      - UPDATE_CHECKING=false
    volumes:
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    depends_on:
      - mongo
    ports:
      - "8003:3000"
    networks:
      - rocketchat
      - web

networks:
  rocketchat:
    driver: bridge
  web:
    external: true