sft0farid commited on
Commit
b13bc28
·
verified ·
1 Parent(s): 2cd30f2

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +25 -10
Dockerfile CHANGED
@@ -2,9 +2,19 @@ FROM codercom/code-server:latest
2
 
3
  USER root
4
 
5
- RUN apt-get update && apt-get install -y tzdata && rm -rf /var/lib/apt/lists/*
 
 
 
6
  ENV TZ=Europe/Oslo
7
 
 
 
 
 
 
 
 
8
  RUN cat <<'EOF' > /usr/local/bin/home-save
9
  #!/bin/sh
10
  set -e
@@ -12,6 +22,7 @@ tar -czpf /data/home-backup.tar.gz.tmp -C /home/coder .
12
  mv /data/home-backup.tar.gz.tmp /data/home-backup.tar.gz
13
  EOF
14
 
 
15
  RUN cat <<'EOF' > /usr/local/bin/home-restore
16
  #!/bin/sh
17
  set -e
@@ -20,6 +31,7 @@ if [ -f /data/home-backup.tar.gz ]; then
20
  fi
21
  EOF
22
 
 
23
  RUN cat <<'EOF' > /usr/local/bin/home-save-daemon
24
  #!/bin/sh
25
  LOG=/data/home-backup.log
@@ -30,7 +42,7 @@ while true; do
30
  next=$(date -d "tomorrow 04:00:00" +%s)
31
  fi
32
  sleep "$((next - now))"
33
- { echo "[$(date '+%Y-%m-%d %H:%M:%S %Z')] backup"; home-save; } >> "$LOG" 2>&1
34
  done
35
  EOF
36
 
@@ -41,19 +53,22 @@ WORKDIR /home/coder
41
 
42
  EXPOSE 7860
43
 
44
- # КРИТИЧНО: сбрасываем entrypoint базового образа,
45
- # иначе CMD ниже проигнорируется (уже наступали на это)
46
  ENTRYPOINT []
47
 
48
  CMD ["/bin/sh", "-c", "\
49
- mkdir -p /data && \
 
50
  home-restore; \
51
  home-save-daemon & \
52
- exec code-server \
53
  --bind-addr 0.0.0.0:7860 \
54
  --auth password \
55
- --config /data/.vscode/config.yaml \
56
- --user-data-dir /data/.vscode/user-data \
57
- --extensions-dir /data/.vscode/extensions \
58
- /data \
 
 
 
59
  "]
 
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
 
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
 
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
 
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
 
 
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
  "]