soxogvv commited on
Commit
55e54e8
Β·
verified Β·
1 Parent(s): b7a5f2f

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +44 -8
Dockerfile CHANGED
@@ -34,14 +34,13 @@ USER root
34
 
35
  # ── Set HOME and PATH ─────────────────────────────────────────────────────────
36
  ENV HOME=/root \
37
- PATH="/root/.npm-global/bin:/root/venv/bin:${PATH}" \
38
  VIRTUAL_ENV=/root/venv \
39
  PIP_NO_CACHE_DIR=1 \
40
  HOSTNAME=kanha
41
 
42
- # ── Install shellular globally ────────────────────────────────────────────────
43
- RUN npm config set prefix /root/.npm-global && \
44
- npm install -g shellular
45
 
46
  # ── Create Python venv ────────────────────────────────────────────────────────
47
  RUN python3 -m venv /root/venv && \
@@ -56,6 +55,28 @@ RUN echo 'export PS1="\u@kanha:\w\$ "' >> /root/.bashrc && \
56
  echo 'cd /data' >> /root/.bash_profile && \
57
  echo '. /root/venv/bin/activate' >> /root/.bash_profile
58
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
  # ── Ensure /data exists ───────────────────────────────────────────────────────
60
  RUN mkdir -p /data
61
 
@@ -86,14 +107,29 @@ RUN printf '%s\n' \
86
  ' ln -sf "$DEST" "$SRC"' \
87
  '}' \
88
  '' \
89
- 'persist /root/venv /data/persist/venv' \
90
- 'persist /root/.cache /data/persist/cache' \
91
- 'persist /root/.npm-global /data/persist/npm-global' \
92
  '' \
93
  'rm -f /data/persist/venv/lib/python*/EXTERNALLY-MANAGED' \
94
  '' \
95
  'export VIRTUAL_ENV=/data/persist/venv' \
96
- 'export PATH="/data/persist/venv/bin:/data/persist/npm-global/bin:$PATH"' \
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  '' \
98
  'exec "$@"' \
99
  > /usr/local/bin/docker-entrypoint.sh && \
 
34
 
35
  # ── Set HOME and PATH ─────────────────────────────────────────────────────────
36
  ENV HOME=/root \
37
+ PATH="/root/venv/bin:${PATH}" \
38
  VIRTUAL_ENV=/root/venv \
39
  PIP_NO_CACHE_DIR=1 \
40
  HOSTNAME=kanha
41
 
42
+ # ── Install shellular globally into /usr/local (never persisted, always works) ─
43
+ RUN npm install -g --prefix /usr/local shellular
 
44
 
45
  # ── Create Python venv ────────────────────────────────────────────────────────
46
  RUN python3 -m venv /root/venv && \
 
55
  echo 'cd /data' >> /root/.bash_profile && \
56
  echo '. /root/venv/bin/activate' >> /root/.bash_profile
57
 
58
+ # ── apt-install wrapper ───────────────────────────────────────────────────────
59
+ RUN printf '%s\n' \
60
+ '#!/bin/sh' \
61
+ 'set -e' \
62
+ 'APT_FILE="/data/apt.txt"' \
63
+ 'touch "$APT_FILE"' \
64
+ 'apt-get update -qq' \
65
+ 'for pkg in "$@"; do' \
66
+ ' pkg=$(echo "$pkg" | tr -d "[:space:]")' \
67
+ ' [ -z "$pkg" ] && continue' \
68
+ ' apt-get install -y --no-install-recommends "$pkg"' \
69
+ ' if ! grep -qx "$pkg" "$APT_FILE"; then' \
70
+ ' echo "$pkg" >> "$APT_FILE"' \
71
+ ' echo "βœ“ $pkg saved to apt.txt"' \
72
+ ' else' \
73
+ ' echo "βœ“ $pkg installed (already in apt.txt)"' \
74
+ ' fi' \
75
+ 'done' \
76
+ 'rm -rf /var/lib/apt/lists/*' \
77
+ > /usr/local/bin/apt-install && \
78
+ chmod +x /usr/local/bin/apt-install
79
+
80
  # ── Ensure /data exists ───────────────────────────────────────────────────────
81
  RUN mkdir -p /data
82
 
 
107
  ' ln -sf "$DEST" "$SRC"' \
108
  '}' \
109
  '' \
110
+ 'persist /root/venv /data/persist/venv' \
111
+ 'persist /root/.cache /data/persist/cache' \
 
112
  '' \
113
  'rm -f /data/persist/venv/lib/python*/EXTERNALLY-MANAGED' \
114
  '' \
115
  'export VIRTUAL_ENV=/data/persist/venv' \
116
+ 'export PATH="/data/persist/venv/bin:$PATH"' \
117
+ '' \
118
+ '# ── apt.txt auto-install on every restart ────────────────────────────' \
119
+ 'APT_FILE="/data/apt.txt"' \
120
+ 'if [ ! -f "$APT_FILE" ]; then' \
121
+ ' touch "$APT_FILE"' \
122
+ 'fi' \
123
+ 'if [ -s "$APT_FILE" ]; then' \
124
+ ' apt-get update -qq' \
125
+ ' while IFS= read -r pkg || [ -n "$pkg" ]; do' \
126
+ ' pkg=$(echo "$pkg" | tr -d "[:space:]")' \
127
+ ' [ -z "$pkg" ] && continue' \
128
+ ' [ "${pkg#\#}" != "$pkg" ] && continue' \
129
+ ' apt-get install -y --no-install-recommends "$pkg" || echo "WARNING: Failed to install $pkg"' \
130
+ ' done < "$APT_FILE"' \
131
+ ' rm -rf /var/lib/apt/lists/*' \
132
+ 'fi' \
133
  '' \
134
  'exec "$@"' \
135
  > /usr/local/bin/docker-entrypoint.sh && \