soxogvv commited on
Commit
d6e48f1
Β·
verified Β·
1 Parent(s): 0befb19

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +26 -19
Dockerfile CHANGED
@@ -53,29 +53,47 @@ RUN echo 'export PS1="\u@kanha:\w\$ "' >> /root/.bashrc && \
53
  echo 'cd /data' >> /root/.bashrc && \
54
  echo 'cd /data' >> /root/.bash_profile
55
 
56
- # ── Intercept apt and apt-get β†’ save packages to apt.txt ─────────────────────
57
- # Moves real binaries to /usr/bin/apt.real and /usr/bin/apt-get.real
58
- # Our wrappers sit in /usr/local/bin which is higher priority in PATH
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
  RUN printf '%s\n' \
60
  '#!/bin/sh' \
61
- '# Wrapper for apt and apt-get β€” intercepts install and saves to apt.txt' \
62
  'APT_FILE="/data/apt.txt"' \
63
  'REAL_BIN="$1"' \
64
  'shift' \
65
  'if [ "$1" = "install" ]; then' \
66
  ' shift' \
67
- ' # Run the real apt/apt-get install' \
68
  ' "$REAL_BIN" install "$@"' \
69
  ' STATUS=$?' \
70
- ' # Only save if install succeeded' \
71
  ' if [ $STATUS -eq 0 ]; then' \
72
  ' touch "$APT_FILE"' \
73
  ' for arg in "$@"; do' \
74
- ' # Skip flags like -y --no-install-recommends' \
75
  ' case "$arg" in' \
76
  ' -*) continue ;;' \
77
  ' esac' \
78
- ' # Skip if already in apt.txt' \
79
  ' if ! grep -qx "$arg" "$APT_FILE"; then' \
80
  ' echo "$arg" >> "$APT_FILE"' \
81
  ' echo "βœ“ $arg saved to apt.txt"' \
@@ -84,19 +102,16 @@ RUN printf '%s\n' \
84
  ' fi' \
85
  ' exit $STATUS' \
86
  'fi' \
87
- '# For all other apt commands (update, remove, etc) just pass through' \
88
  '"$REAL_BIN" "$@"' \
89
  > /usr/local/bin/_apt_wrapper && \
90
  chmod +x /usr/local/bin/_apt_wrapper
91
 
92
- # apt wrapper
93
  RUN printf '%s\n' \
94
  '#!/bin/sh' \
95
  'exec /usr/local/bin/_apt_wrapper /usr/bin/apt "$@"' \
96
  > /usr/local/bin/apt && \
97
  chmod +x /usr/local/bin/apt
98
 
99
- # apt-get wrapper
100
  RUN printf '%s\n' \
101
  '#!/bin/sh' \
102
  'exec /usr/local/bin/_apt_wrapper /usr/bin/apt-get "$@"' \
@@ -138,14 +153,6 @@ RUN printf '%s\n' \
138
  '' \
139
  'rm -f /data/persist/venv/lib/python*/EXTERNALLY-MANAGED' \
140
  '' \
141
- '# Write real venv path to every shell automatically' \
142
- 'cat > /etc/profile.d/venv.sh << EOF' \
143
- 'export VIRTUAL_ENV=/data/persist/venv' \
144
- 'export PATH="/data/persist/venv/bin:$PATH"' \
145
- 'EOF' \
146
- '' \
147
- 'grep -qx "source /etc/profile.d/venv.sh" /root/.bashrc || echo "source /etc/profile.d/venv.sh" >> /root/.bashrc' \
148
- '' \
149
  'export VIRTUAL_ENV=/data/persist/venv' \
150
  'export PATH="/data/persist/venv/bin:$PATH"' \
151
  '' \
 
53
  echo 'cd /data' >> /root/.bashrc && \
54
  echo 'cd /data' >> /root/.bash_profile
55
 
56
+ # ── Force pip/python to always use venv (works in ALL shell types) ────────────
57
+ RUN printf '%s\n' \
58
+ '#!/bin/sh' \
59
+ 'exec /data/persist/venv/bin/pip "$@"' \
60
+ > /usr/local/bin/pip && \
61
+ chmod +x /usr/local/bin/pip && \
62
+ \
63
+ printf '%s\n' \
64
+ '#!/bin/sh' \
65
+ 'exec /data/persist/venv/bin/pip3 "$@"' \
66
+ > /usr/local/bin/pip3 && \
67
+ chmod +x /usr/local/bin/pip3 && \
68
+ \
69
+ printf '%s\n' \
70
+ '#!/bin/sh' \
71
+ 'exec /data/persist/venv/bin/python "$@"' \
72
+ > /usr/local/bin/python && \
73
+ chmod +x /usr/local/bin/python && \
74
+ \
75
+ printf '%s\n' \
76
+ '#!/bin/sh' \
77
+ 'exec /data/persist/venv/bin/python3 "$@"' \
78
+ > /usr/local/bin/python3 && \
79
+ chmod +x /usr/local/bin/python3
80
+
81
+ # ── apt/apt-get wrapper β†’ intercepts install and saves to apt.txt ─────────────
82
  RUN printf '%s\n' \
83
  '#!/bin/sh' \
 
84
  'APT_FILE="/data/apt.txt"' \
85
  'REAL_BIN="$1"' \
86
  'shift' \
87
  'if [ "$1" = "install" ]; then' \
88
  ' shift' \
 
89
  ' "$REAL_BIN" install "$@"' \
90
  ' STATUS=$?' \
 
91
  ' if [ $STATUS -eq 0 ]; then' \
92
  ' touch "$APT_FILE"' \
93
  ' for arg in "$@"; do' \
 
94
  ' case "$arg" in' \
95
  ' -*) continue ;;' \
96
  ' esac' \
 
97
  ' if ! grep -qx "$arg" "$APT_FILE"; then' \
98
  ' echo "$arg" >> "$APT_FILE"' \
99
  ' echo "βœ“ $arg saved to apt.txt"' \
 
102
  ' fi' \
103
  ' exit $STATUS' \
104
  'fi' \
 
105
  '"$REAL_BIN" "$@"' \
106
  > /usr/local/bin/_apt_wrapper && \
107
  chmod +x /usr/local/bin/_apt_wrapper
108
 
 
109
  RUN printf '%s\n' \
110
  '#!/bin/sh' \
111
  'exec /usr/local/bin/_apt_wrapper /usr/bin/apt "$@"' \
112
  > /usr/local/bin/apt && \
113
  chmod +x /usr/local/bin/apt
114
 
 
115
  RUN printf '%s\n' \
116
  '#!/bin/sh' \
117
  'exec /usr/local/bin/_apt_wrapper /usr/bin/apt-get "$@"' \
 
153
  '' \
154
  'rm -f /data/persist/venv/lib/python*/EXTERNALLY-MANAGED' \
155
  '' \
 
 
 
 
 
 
 
 
156
  'export VIRTUAL_ENV=/data/persist/venv' \
157
  'export PATH="/data/persist/venv/bin:$PATH"' \
158
  '' \