#!/bin/bash set -e echo "Creating MongoDB configuration..." cat > /tmp/mongod.conf << EOF storage: dbPath: /data/db systemLog: destination: file path: /var/log/mongodb.log logAppend: true net: bindIp: 127.0.0.1 port: 27017 replication: replSetName: rs01 EOF # Ensure proper permissions echo "Setting up permissions..." chown -R mongodb:mongodb /data/db /var/log/mongodb.log # Start MongoDB echo "Starting MongoDB..." mongod --config /tmp/mongod.conf & # Wait for MongoDB to be ready echo "Waiting for MongoDB to start..." max_attempts=30 attempt=1 while ! mongosh --quiet --eval "db.version()" > /dev/null 2>&1; do if [ $attempt -gt $max_attempts ]; then echo "MongoDB failed to start. Showing logs:" cat /var/log/mongodb.log exit 1 fi echo "Attempt $attempt of $max_attempts: MongoDB not ready yet..." sleep 2 attempt=$((attempt + 1)) done echo "MongoDB started successfully" # Initialize replica set echo "Initializing replica set..." mongosh --eval 'rs.initiate({_id: "rs01", members: [{_id: 0, host: "localhost:27017"}]})' || { echo "Failed to initialize replica set" exit 1 } # Wait for replica set to initialize echo "Waiting for replica set to be ready..." attempt=1 while ! mongosh --eval "rs.status()" | grep -q '"ok" : 1'; do if [ $attempt -gt $max_attempts ]; then echo "Replica set failed to initialize after $max_attempts attempts" exit 1 fi echo "Attempt $attempt of $max_attempts: Replica set not ready yet..." sleep 2 attempt=$((attempt + 1)) done echo "Replica set initialized successfully" # Start Rocket.Chat echo "Starting Rocket.Chat..." cd /opt/Rocket.Chat exec node main.js