sft0farid commited on
Commit
0040b43
·
verified ·
1 Parent(s): a1efb2c

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +71 -15
Dockerfile CHANGED
@@ -1,19 +1,75 @@
1
- # Используем готовый официальный образ вместо сборки из исходников —
2
- # это снимает проблему с долгой (и упирающейся в таймаут HF) компиляцией BoringSSL.
3
- FROM ghcr.io/niyueee/ds-free-api:latest
4
 
5
- # Все данные (config.toml, logs/, stats.json) кладём на /data —
6
- # именно туда Hugging Face Spaces монтирует Persistent Storage
7
- ENV RUST_LOG=info \
8
- TZ=Asia/Shanghai \
9
- DS_DATA_DIR=/data \
10
- DS_CONFIG_PATH=/data/config.toml
11
 
12
- # На случай, если /data ещё не существует или смонтирован с чужим владельцем
13
- RUN mkdir -p /data && chmod -R 777 /data
 
14
 
15
- EXPOSE 22217
16
 
17
- # ENTRYPOINT/CMD наследуются из базового образа — он сам умеет
18
- # создавать конфиг при отсутствии файла по DS_CONFIG_PATH и работать без него,
19
- # донастраивая всё через веб-панель /admin
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM codercom/code-server:latest
 
 
2
 
3
+ USER root
 
 
 
 
 
4
 
5
+ RUN apt-get update && apt-get install -y \
6
+ tzdata \
7
+ && rm -rf /var/lib/apt/lists/*
8
 
9
+ ENV TZ=Europe/Oslo
10
 
11
+ RUN mkdir -p /data
12
+
13
+ # Короткий промпт
14
+ RUN echo "export PS1='\[\033[01;32m\]farid\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '" >> /home/coder/.bashrc && \
15
+ chown coder:coder /home/coder/.bashrc
16
+
17
+ # Скрипт сохранения HOME (весь /home/coder — конфиги, vscode, extensions, opencode и т.д.)
18
+ RUN cat <<'EOF' > /usr/local/bin/home-save
19
+ #!/bin/sh
20
+ set -e
21
+ tar -czpf /data/home-backup.tar.gz.tmp -C /home/coder .
22
+ mv /data/home-backup.tar.gz.tmp /data/home-backup.tar.gz
23
+ EOF
24
+
25
+ # Скрипт восстановления HOME
26
+ RUN cat <<'EOF' > /usr/local/bin/home-restore
27
+ #!/bin/sh
28
+ set -e
29
+ if [ -f /data/home-backup.tar.gz ]; then
30
+ tar -xzpf /data/home-backup.tar.gz -C /home/coder
31
+ fi
32
+ EOF
33
+
34
+ # Демон: бэкап каждый день в 04:00 по Europe/Oslo
35
+ RUN cat <<'EOF' > /usr/local/bin/home-save-daemon
36
+ #!/bin/sh
37
+ LOG=/data/home-backup.log
38
+ while true; do
39
+ now=$(date +%s)
40
+ next=$(date -d "today 04:00:00" +%s)
41
+ if [ "$next" -le "$now" ]; then
42
+ next=$(date -d "tomorrow 04:00:00" +%s)
43
+ fi
44
+ sleep "$((next - now))"
45
+ { echo "[$(date '+%Y-%m-%d %H:%M:%S %Z')] scheduled backup"; home-save; } >> "$LOG" 2>&1
46
+ done
47
+ EOF
48
+
49
+ RUN chmod +x /usr/local/bin/home-save /usr/local/bin/home-restore /usr/local/bin/home-save-daemon
50
+
51
+ USER coder
52
+ WORKDIR /home/coder
53
+
54
+ EXPOSE 7860
55
+
56
+ # Сбрасываем entrypoint базового образа — иначе CMD ниже игнорируется
57
+ ENTRYPOINT []
58
+
59
+ CMD ["/bin/sh", "-c", "\
60
+ mkdir -p /data; \
61
+ mkdir -p /home/coder/.vscode/user-data /home/coder/.vscode/extensions; \
62
+ home-restore; \
63
+ home-save-daemon & \
64
+ code-server \
65
+ --bind-addr 0.0.0.0:7860 \
66
+ --auth password \
67
+ --config /home/coder/.vscode/config.yaml \
68
+ --user-data-dir /home/coder/.vscode/user-data \
69
+ --extensions-dir /home/coder/.vscode/extensions \
70
+ /home/coder & \
71
+ CODE_PID=$!; \
72
+ trap 'echo [$(date \"+%Y-%m-%d %H:%M:%S %Z\")] shutdown signal, saving >> /data/home-backup.log; home-save; kill -TERM $CODE_PID 2>/dev/null; wait $CODE_PID' TERM INT; \
73
+ wait $CODE_PID \
74
+ "]
75
+