bizarx commited on
Commit
1df89d6
·
verified ·
1 Parent(s): 2dc6d8b

Add HF persistent storage for code-server data, extensions, and settings

Browse files
Files changed (3) hide show
  1. Dockerfile +10 -3
  2. README.md +1 -0
  3. start_server.sh +30 -3
Dockerfile CHANGED
@@ -45,14 +45,18 @@ RUN useradd -m -s /bin/zsh coder && \
45
  echo 'coder ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
46
 
47
  # Create code-server configuration directory
48
- RUN mkdir -p /home/coder/.local/share/code-server/User && \
49
- chmod -R 777 /home/coder && \
 
 
 
 
50
  echo '{ \
51
  "workbench.colorTheme": "Default Dark Modern", \
52
  "telemetry.enableTelemetry": true, \
53
  "telemetry.enableCrashReporter": true \
54
  }' > /home/coder/.local/share/code-server/User/settings.json && \
55
- chown -R coder:coder /home/coder/.local/share/code-server
56
 
57
  # Install Python extension for code-server
58
  RUN sudo -u coder code-server --install-extension ms-python.python
@@ -66,6 +70,9 @@ RUN chmod +x /home/coder/start_server.sh
66
  ENV HOME=/home/coder \
67
  PATH=/home/coder/.local/bin:$PATH
68
 
 
 
 
69
  WORKDIR /home/coder
70
 
71
  EXPOSE 7860
 
45
  echo 'coder ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
46
 
47
  # Create code-server configuration directory
48
+ RUN mkdir -p /home/coder/.local/share/code-server/User \
49
+ /home/coder/.local/share/code-server/extensions \
50
+ /data/files \
51
+ /data/projects \
52
+ /data/coder-config && \
53
+ chmod -R 777 /home/coder /data && \
54
  echo '{ \
55
  "workbench.colorTheme": "Default Dark Modern", \
56
  "telemetry.enableTelemetry": true, \
57
  "telemetry.enableCrashReporter": true \
58
  }' > /home/coder/.local/share/code-server/User/settings.json && \
59
+ chown -R coder:coder /home/coder/.local/share/code-server /data
60
 
61
  # Install Python extension for code-server
62
  RUN sudo -u coder code-server --install-extension ms-python.python
 
70
  ENV HOME=/home/coder \
71
  PATH=/home/coder/.local/bin:$PATH
72
 
73
+ # /data adalah persistent storage dari HF Spaces
74
+ VOLUME ["/data"]
75
+
76
  WORKDIR /home/coder
77
 
78
  EXPOSE 7860
README.md CHANGED
@@ -6,6 +6,7 @@ colorTo: purple
6
  sdk: docker
7
  pinned: false
8
  license: apache-2.0
 
9
  ---
10
 
11
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
6
  sdk: docker
7
  pinned: false
8
  license: apache-2.0
9
+ storage: small
10
  ---
11
 
12
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
start_server.sh CHANGED
@@ -8,8 +8,34 @@ if [ -n "$RCLONE_CONF" ]; then
8
  echo "$RCLONE_CONF" > ~/.config/rclone/rclone.conf
9
  fi
10
 
11
- echo "====================== Starting dufs (port 5000) ========================"
 
12
  mkdir -p /data/files
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  /usr/local/bin/dufs /data/files \
14
  --allow-upload \
15
  --allow-delete \
@@ -24,7 +50,8 @@ sleep 1
24
 
25
  echo "====================== Starting code-server (port 8443) ========================"
26
  sudo -E -u coder code-server \
27
- --bind-addr 127.0.0.1:8443 &
 
28
 
29
  sleep 2
30
 
@@ -32,4 +59,4 @@ echo "====================== Starting nginx (port 7860) ========================
32
  # Remove default nginx site configs
33
  rm -f /etc/nginx/sites-enabled/default /etc/nginx/sites-enabled/* /etc/nginx/conf.d/default.conf 2>/dev/null || true
34
 
35
- nginx -g "daemon off;"
 
8
  echo "$RCLONE_CONF" > ~/.config/rclone/rclone.conf
9
  fi
10
 
11
+ echo "====================== Setting up persistent storage ========================"
12
+ # Buat folder persistent di /data
13
  mkdir -p /data/files
14
+ mkdir -p /data/projects
15
+ mkdir -p /data/coder-config/extensions
16
+ mkdir -p /data/coder-config/User
17
+
18
+ # Symlink config dan extensions code-server ke /data (persistent)
19
+ if [ ! -L /home/coder/.local/share/code-server/extensions ]; then
20
+ rm -rf /home/coder/.local/share/code-server/extensions
21
+ ln -sf /data/coder-config/extensions /home/coder/.local/share/code-server/extensions
22
+ fi
23
+
24
+ # Simpan settings user ke /data jika belum ada
25
+ if [ ! -f /data/coder-config/User/settings.json ]; then
26
+ cp /home/coder/.local/share/code-server/User/settings.json /data/coder-config/User/settings.json 2>/dev/null || \
27
+ echo '{"workbench.colorTheme": "Default Dark Modern"}' > /data/coder-config/User/settings.json
28
+ fi
29
+
30
+ # Symlink User settings ke /data
31
+ if [ ! -L /home/coder/.local/share/code-server/User ]; then
32
+ rm -rf /home/coder/.local/share/code-server/User
33
+ ln -sf /data/coder-config/User /home/coder/.local/share/code-server/User
34
+ fi
35
+
36
+ chown -R coder:coder /data 2>/dev/null || true
37
+
38
+ echo "====================== Starting dufs (port 5000) ========================"
39
  /usr/local/bin/dufs /data/files \
40
  --allow-upload \
41
  --allow-delete \
 
50
 
51
  echo "====================== Starting code-server (port 8443) ========================"
52
  sudo -E -u coder code-server \
53
+ --bind-addr 127.0.0.1:8443 \
54
+ --user-data-dir /data/coder-config &
55
 
56
  sleep 2
57
 
 
59
  # Remove default nginx site configs
60
  rm -f /etc/nginx/sites-enabled/default /etc/nginx/sites-enabled/* /etc/nginx/conf.d/default.conf 2>/dev/null || true
61
 
62
+ nginx -g "daemon off;"