49 lines
1.4 KiB
Bash
49 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
# Ensure permissions on volume and logs directory
|
|
mkdir -p /data/db /var/log/mongodb /var/run/mongodb
|
|
chown -R mongodb:mongodb /data/db /var/log/mongodb /var/run/mongodb
|
|
|
|
echo "Starting local MongoDB server (only accessible from inside container)..."
|
|
# Start mongod as default mongodb user, bound to localhost (127.0.0.1)
|
|
if ! su -s /bin/bash -c "mongod --dbpath /data/db --bind_ip 127.0.0.1 --fork --logpath /var/log/mongodb/mongod.log" mongodb; then
|
|
echo "ERROR: Failed to fork mongod process."
|
|
if [ -f /var/log/mongodb/mongod.log ]; then
|
|
echo "=== MongoDB Log (/var/log/mongodb/mongod.log) ==="
|
|
cat /var/log/mongodb/mongod.log
|
|
fi
|
|
exit 1
|
|
fi
|
|
|
|
echo "Waiting for MongoDB to be ready..."
|
|
READY=0
|
|
for i in $(seq 1 30); do
|
|
if mongosh --eval "db.adminCommand('ping')" --quiet &>/dev/null; then
|
|
READY=1
|
|
echo "MongoDB is ready."
|
|
break
|
|
fi
|
|
sleep 1
|
|
done
|
|
|
|
if [ "$READY" -ne 1 ]; then
|
|
echo "ERROR: MongoDB did not become ready within 30 seconds!"
|
|
if [ -f /var/log/mongodb/mongod.log ]; then
|
|
echo "=== MongoDB Log (/var/log/mongodb/mongod.log) ==="
|
|
tail -n 100 /var/log/mongodb/mongod.log
|
|
fi
|
|
exit 1
|
|
fi
|
|
|
|
echo "Starting Nginx reverse proxy..."
|
|
if ! nginx; then
|
|
echo "ERROR: Failed to start Nginx."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Starting Node.js backend connected to local MongoDB..."
|
|
# Start the Node.js API server using MongoDB
|
|
exec node server/api-mongodb.js
|
|
|