nxdev-org commited on
Commit
53d4685
·
1 Parent(s): 65f1e70

update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +32 -34
Dockerfile CHANGED
@@ -1,6 +1,6 @@
1
  # HuggingFace Spaces Dockerfile for Overleaf with Japanese LaTeX
2
  #
3
- # FIXED: MongoDB data directory initialization
4
  #
5
  # Features:
6
  # - Full TeX Live 2025 with Japanese support
@@ -19,7 +19,6 @@ RUN apt-get update && apt-get install -y \
19
  curl \
20
  && rm -rf /var/lib/apt/lists/*
21
 
22
- # Add MongoDB repository and install MongoDB 8.0
23
  RUN wget -qO - https://www.mongodb.org/static/pgp/server-8.0.asc | apt-key add - \
24
  && echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/8.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-8.0.list \
25
  && apt-get update \
@@ -27,17 +26,7 @@ RUN wget -qO - https://www.mongodb.org/static/pgp/server-8.0.asc | apt-key add -
27
  && rm -rf /var/lib/apt/lists/*
28
 
29
  # ============================================
30
- # STEP 2: CREATE DIRECTORIES WITH PROPER PERMS
31
- # ============================================
32
- RUN mkdir -p /data/{mongo,redis,overleaf,git-bridge} \
33
- /var/log/{mongodb,redis} \
34
- && chmod -R 777 /data /var/log
35
-
36
- # Fix all permissions
37
- RUN chmod -R 777 /etc 2>/dev/null || true
38
-
39
- # ============================================
40
- # STEP 3: REMOVE DEFAULT MONGO CHECK SCRIPTS
41
  # ============================================
42
  RUN rm -f /etc/my_init.d/500_check_db_access.sh 2>/dev/null || true
43
  RUN rm -f /etc/my_init.d/500_check_mongo.sh 2>/dev/null || true
@@ -45,35 +34,37 @@ RUN rm -f /etc/runit/mongo 2>/dev/null || true
45
  RUN rm -f /etc/runit/redis 2>/dev/null || true
46
 
47
  # ============================================
48
- # STEP 4: CREATE CUSTOM INIT SCRIPT
49
  # ============================================
50
  RUN cat > /etc/my_init.d/00_start_services.sh << 'EOFSCRIPT'
51
  #!/bin/bash
52
  set -e
53
 
54
- echo "=== PREPARING MONGODB DATA DIRECTORY ==="
55
- # Ensure data directory exists with proper ownership
56
- chmod -R 777 /data/mongo
57
- chown -R root:root /data/mongo 2>/dev/null || true
58
- chmod 755 /data/mongo
59
- chmod 755 /data
 
 
 
60
 
61
- # Remove any stale lock files
 
 
 
 
 
62
  rm -f /data/mongo/mongod.lock 2>/dev/null || true
63
  rm -f /data/mongo/WiredTiger.lock 2>/dev/null || true
 
64
 
65
- # Initialize empty data directory if needed
66
- if [ ! -f /data/mongo/WiredTiger ]; then
67
- echo "Initializing new MongoDB data directory..."
68
- fi
69
 
70
  echo "=== STARTING MONGODB ==="
71
- # Start MongoDB WITHOUT fork to see full error
72
- mkdir -p /var/log/mongodb
73
- chmod 777 /var/log/mongodb
74
-
75
- # Try to start without fork for debugging
76
  set +e
 
77
  mongod --dbpath /data/mongo \
78
  --bind_ip 127.0.0.1 \
79
  --replSet overleaf \
@@ -86,12 +77,19 @@ MONGOPID=$!
86
  echo "MongoDB started with PID: $MONGOPID"
87
 
88
  # Wait for MongoDB to start
89
- sleep 15
 
 
 
 
 
 
 
90
 
91
  # Check if MongoDB is still running
92
  if ! kill -0 $MONGOPID 2>/dev/null; then
93
  echo "MongoDB failed to start. Log output:"
94
- cat /var/log/mongodb/mongodb.log 2>/dev/null || true
95
  exit 1
96
  fi
97
 
@@ -101,7 +99,7 @@ mongosh --quiet --eval "
101
  rs.initiate({_id: 'overleaf', members: [{_id: 0, host: '127.0.0.1:27017'}]});
102
  print('Replica set initiated');
103
  } catch(e) {
104
- print('Replica set may already exist: ' + e);
105
  }
106
  " 2>&1 || true
107
 
@@ -118,7 +116,7 @@ EOFSCRIPT
118
  RUN chmod +x /etc/my_init.d/00_start_services.sh
119
 
120
  # ============================================
121
- # STEP 5: SET ENVIRONMENT
122
  # ============================================
123
  RUN mkdir -p /etc/container_environment
124
  RUN printf "mongodb://127.0.0.1:27017/sharelatex" > /etc/container_environment/OVERLEAF_MONGO_URL
 
1
  # HuggingFace Spaces Dockerfile for Overleaf with Japanese LaTeX
2
  #
3
+ # FIXED: Create directories at runtime, not build time
4
  #
5
  # Features:
6
  # - Full TeX Live 2025 with Japanese support
 
19
  curl \
20
  && rm -rf /var/lib/apt/lists/*
21
 
 
22
  RUN wget -qO - https://www.mongodb.org/static/pgp/server-8.0.asc | apt-key add - \
23
  && echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/8.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-8.0.list \
24
  && apt-get update \
 
26
  && rm -rf /var/lib/apt/lists/*
27
 
28
  # ============================================
29
+ # STEP 2: REMOVE DEFAULT MONGO CHECK SCRIPTS
 
 
 
 
 
 
 
 
 
 
30
  # ============================================
31
  RUN rm -f /etc/my_init.d/500_check_db_access.sh 2>/dev/null || true
32
  RUN rm -f /etc/my_init.d/500_check_mongo.sh 2>/dev/null || true
 
34
  RUN rm -f /etc/runit/redis 2>/dev/null || true
35
 
36
  # ============================================
37
+ # STEP 3: CREATE CUSTOM INIT SCRIPT (RUNS AT STARTUP)
38
  # ============================================
39
  RUN cat > /etc/my_init.d/00_start_services.sh << 'EOFSCRIPT'
40
  #!/bin/bash
41
  set -e
42
 
43
+ echo "=== CREATING DIRECTORIES AT RUNTIME ==="
44
+
45
+ # Create all necessary directories
46
+ mkdir -p /data/mongo
47
+ mkdir -p /data/redis
48
+ mkdir -p /data/overleaf
49
+ mkdir -p /data/git-bridge
50
+ mkdir -p /var/log/mongodb
51
+ mkdir -p /var/log/redis
52
 
53
+ # Set permissions - HF Spaces needs 777
54
+ chmod -R 777 /data
55
+ chmod -R 777 /var/log/mongodb
56
+ chmod -R 777 /var/log/redis
57
+
58
+ # Remove stale lock files if any
59
  rm -f /data/mongo/mongod.lock 2>/dev/null || true
60
  rm -f /data/mongo/WiredTiger.lock 2>/dev/null || true
61
+ rm -f /data/mongo/WiredTiger 2>/dev/null || true
62
 
63
+ echo "Directories created: $(ls -la /data/)"
 
 
 
64
 
65
  echo "=== STARTING MONGODB ==="
 
 
 
 
 
66
  set +e
67
+
68
  mongod --dbpath /data/mongo \
69
  --bind_ip 127.0.0.1 \
70
  --replSet overleaf \
 
77
  echo "MongoDB started with PID: $MONGOPID"
78
 
79
  # Wait for MongoDB to start
80
+ for i in {1..30}; do
81
+ if mongosh --quiet --eval "db.adminCommand('ping')" > /dev/null 2>&1; then
82
+ echo "MongoDB is ready after $i seconds"
83
+ break
84
+ fi
85
+ echo "Waiting for MongoDB... ($i/30)"
86
+ sleep 1
87
+ done
88
 
89
  # Check if MongoDB is still running
90
  if ! kill -0 $MONGOPID 2>/dev/null; then
91
  echo "MongoDB failed to start. Log output:"
92
+ cat /var/log/mongodb/mongodb.log 2>/dev/null || tail -50 /var/log/mongodb/mongodb.log 2>/dev/null || echo "No log found"
93
  exit 1
94
  fi
95
 
 
99
  rs.initiate({_id: 'overleaf', members: [{_id: 0, host: '127.0.0.1:27017'}]});
100
  print('Replica set initiated');
101
  } catch(e) {
102
+ print('Replica set may already exist or error: ' + e);
103
  }
104
  " 2>&1 || true
105
 
 
116
  RUN chmod +x /etc/my_init.d/00_start_services.sh
117
 
118
  # ============================================
119
+ # STEP 4: SET ENVIRONMENT
120
  # ============================================
121
  RUN mkdir -p /etc/container_environment
122
  RUN printf "mongodb://127.0.0.1:27017/sharelatex" > /etc/container_environment/OVERLEAF_MONGO_URL