bk939448 commited on
Commit
40b0a1b
·
verified ·
1 Parent(s): fa702d1

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +82 -10
Dockerfile CHANGED
@@ -1,7 +1,8 @@
1
- # 1. Node.js का स्टेबल वर्जन
2
  FROM node:18-slim
3
 
4
- # 2. AI और Development के लिए सभी ज़रूरी टूल्स (git, python, gcc, make, nano, zip)
 
5
  RUN apt-get update && apt-get install -y \
6
  curl \
7
  bash \
@@ -15,24 +16,95 @@ RUN apt-get update && apt-get install -y \
15
  nano \
16
  zip \
17
  unzip \
 
18
  && rm -rf /var/lib/apt/lists/*
19
 
20
- # 3. OpenCode इंस्टॉल करें
 
21
  RUN curl -fsSL https://opencode.ai/install | bash
22
 
23
- # 4. रूट यूजर और डेटा फोल्डर सेटअप
 
24
  USER root
25
  RUN mkdir -p /data && chmod 777 /data
26
  WORKDIR /data
27
 
28
- # 5. एन्वायरमेंट सेटिंग्स (Git Config भी यहाँ है)
29
- ENV PATH="/root/.local/bin:/home/node/.local/bin:$PATH"
30
  ENV OPENCODE_DATA_DIR=/data
31
  ENV HOME=/data
32
- ENV OPENCODE_SERVER_AUTH=false
 
 
33
 
34
- # 6. पोर्ट 7860
35
  EXPOSE 7860
36
 
37
- # 7. फाइनल कमांड: Git प्रोफाइल सेट करके सर्वर चालू करना
38
- CMD ["bash", "-c", "git config --global user.email 'badal@example.com' && git config --global user.name 'Badal' && export PATH=$PATH:$(find / -name opencode -type f -printf '%h' -quit 2>/dev/null); opencode web --port 7860 --hostname 0.0.0.0"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 1. Node.js stable version
2
  FROM node:18-slim
3
 
4
+
5
+ # 2. Install required system tools & HF CLI
6
  RUN apt-get update && apt-get install -y \
7
  curl \
8
  bash \
 
16
  nano \
17
  zip \
18
  unzip \
19
+ && curl -LsSf https://hf.co/cli/install.sh | bash \
20
  && rm -rf /var/lib/apt/lists/*
21
 
22
+
23
+ # 3. Install OpenCode
24
  RUN curl -fsSL https://opencode.ai/install | bash
25
 
26
+
27
+ # 4. Setup data folder and root permissions
28
  USER root
29
  RUN mkdir -p /data && chmod 777 /data
30
  WORKDIR /data
31
 
32
+
33
+ # 5. Environment settings with RAM limit
34
  ENV OPENCODE_DATA_DIR=/data
35
  ENV HOME=/data
36
+ ENV PATH="/root/.local/bin:/home/node/.local/bin:$PATH"
37
+ ENV NODE_OPTIONS="--max-old-space-size=14336"
38
+
39
 
40
+ # 6. Expose port 7860
41
  EXPOSE 7860
42
 
43
+
44
+ # 7. Final command with Restore + Health Monitor + Backup
45
+ CMD ["bash", "-c", "
46
+ # Ensure HF CLI is in PATH
47
+ export PATH=\"$HOME/.local/bin:$PATH\"
48
+
49
+ # Set HF Token from Space Secrets
50
+ export HF_TOKEN=\"${HF_TOKEN}\"
51
+
52
+ # Variables
53
+ BUCKET='hf://buckets/bk939448/opencodeai'
54
+ SOURCE='/data'
55
+
56
+ # Configure Git
57
+ git config --global user.email 'badal@example.com'
58
+ git config --global user.name 'Badal'
59
+
60
+ # Set OpenCode path
61
+ OP_PATH=\$(find / -name opencode -type f -printf '%h' -quit 2>/dev/null)
62
+ export PATH=\"\$OP_PATH:\$PATH\"
63
+
64
+ # ============================================
65
+ # STEP 1: RESTORE (MUST SUCCEED)
66
+ # ============================================
67
+ echo '=== [STEP 1] RESTORING DATA FROM BUCKET ==='
68
+ hf sync \"\$BUCKET\" \"\$SOURCE\" \
69
+ --exclude 'bun/*' \
70
+ --exclude '.bun/*' \
71
+ --exclude '*/cache/*' \
72
+ --exclude 'node_modules/*' \
73
+ || { echo 'CRITICAL: Restore failed! Exiting to prevent bucket wipe!'; exit 1; }
74
+ echo '=== [STEP 1] RESTORE COMPLETE ==='
75
+
76
+ # ============================================
77
+ # STEP 2: START OPENCODE
78
+ # ============================================
79
+ echo '=== [STEP 2] STARTING OPENCODE ==='
80
+ export OPENCODE_SERVER_USERNAME=\${OPENCODE_SERVER_USERNAME}
81
+ export OPENCODE_SERVER_PASSWORD=\${OPENCODE_SERVER_PASSWORD}
82
+ opencode web --port 7860 --hostname 0.0.0.0 > /tmp/opencode.log 2>&1 &
83
+ sleep 10
84
+ echo '=== [STEP 2] OPENCODE STARTED ==='
85
+
86
+ # ============================================
87
+ # STEP 3: MONITOR & BACKUP LOOP
88
+ # ============================================
89
+ echo '=== [STEP 3] STARTING MONITOR & BACKUP SERVICE ==='
90
+ while true; do
91
+ # Check if OpenCode is still running
92
+ if ! pgrep -f 'opencode' > /dev/null; then
93
+ echo 'CRITICAL: OpenCode process died! Exiting container...'
94
+ exit 1
95
+ fi
96
+
97
+ # Sync local TO bucket (backup)
98
+ echo \"\$(date): Syncing backup...\"
99
+ hf sync \"\$SOURCE\" \"\$BUCKET\" \
100
+ --exclude 'bun/*' \
101
+ --exclude '.bun/*' \
102
+ --exclude '*/cache/*' \
103
+ --exclude 'node_modules/*' \
104
+ --delete \
105
+ --quiet
106
+
107
+ echo \"\$(date): Backup cycle complete.\"
108
+ sleep 60
109
+ done
110
+ "]