version: '3'

services:
  mongodb:
    image: mongo:6.0
    container_name: rocketchat-mongodb
    restart: always
    volumes:
      - /mnt/storagebox_alpha/rocketchat/mongo/db:/data/db
    user: "1000:1000"  # This is your custom requirement
    command: mongod --oplogSize 128 --replSet rs0
    networks:
      - rocketchat

  # We need this init container specifically because of using user mapping
  mongo-init-replica:
    image: mongo:6.0
    container_name: rocketchat-mongo-init
    restart: "no"
    user: "1000:1000"  # Same user as main MongoDB
    command: >
      bash -c "
        echo 'Waiting for MongoDB to start...'
        sleep 15
        echo 'Initializing replica set...'
        mongosh --host mongodb --eval 'rs.initiate({_id: \"rs0\", members: [{_id: 0, host: \"mongodb:27017\"}]})'
        echo 'Initialization complete'
      "
    networks:
      - rocketchat
    depends_on:
      - mongodb

  rocketchat:
    image: rocket.chat:latest
    container_name: rocketchat
    restart: always
    environment:
      - PORT=3000
      - ROOT_URL=https://rocketchat.systemsobscure.net
      - MONGO_URL=mongodb://mongodb:27017/rocketchat?replicaSet=rs0
      - MONGO_OPLOG_URL=mongodb://mongodb:27017/local?replicaSet=rs0
      - STATISTICS_COLLECTION=false
      - UPDATE_CHECKING=false
    ports:
      - "8003:3000"
    networks:
      - rocketchat
      - web
    depends_on:
      - mongo-init-replica

networks:
  rocketchat:
  web:
    external: true