overleaf-editor / Dockerfile
nxdev-org's picture
Update Dockerfile
e8b828d verified
FROM shantanupatil01/overleaf-extended:latest
USER root
# 1. Install dependencies, add MongoDB 8.0 GPG key and Repository
RUN apt-get update && apt-get install -y gnupg curl redis-server && \
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
gpg --dearmor -o /usr/share/keyrings/mongodb-server-8.0.gpg && \
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | \
tee /etc/apt/sources.list.d/mongodb-org-8.0.list && \
apt-get update && \
apt-get install -y mongodb-org && \
rm -rf /var/lib/apt/lists/*
# 2. Permissions for Hugging Face
RUN mkdir -p /data/db /var/lib/redis /var/lib/overleaf /var/log/overleaf && \
chmod -R 777 /data/db /var/lib/redis /var/lib/overleaf /var/log/overleaf
# 3. Environment Variables (Note the ?replicaSet=overleaf suffix)
ENV OVERLEAF_PORT=7860
ENV OVERLEAF_LISTEN_IP=0.0.0.0
ENV OVERLEAF_MONGO_URL=mongodb://127.0.0.1:27017/overleaf?replicaSet=overleaf
ENV OVERLEAF_REDIS_HOST=127.0.0.1
ENV OVERLEAF_REDIS_PORT=6379
# 4. Updated Entrypoint to handle Replica Set initialization
RUN echo '#!/bin/bash\n\
redis-server --daemonize yes\n\
# Start MongoDB with replica set name "overleaf"\n\
mongod --fork --logpath /var/log/mongodb.log --dbpath /data/db --bind_ip 127.0.0.1 --replSet overleaf\n\
sleep 5\n\
# Initialize the replica set (only needs to run once, but safe to repeat)\n\
mongosh --eval "try { rs.initiate() } catch (e) { print(\"Already initiated\") }"\n\
sleep 2\n\
# Start Overleaf\n\
exec /sbin/my_init\n\
' > /entrypoint.sh && chmod +x /entrypoint.sh
EXPOSE 7860
ENTRYPOINT ["/entrypoint.sh"]