Update Dockerfile
Browse files- Dockerfile +4 -21
Dockerfile
CHANGED
|
@@ -91,7 +91,6 @@ RUN printf '%s\n' \
|
|
| 91 |
' case "$arg" in -*) continue ;; esac' \
|
| 92 |
' if ! grep -qx "$arg" "$APT_FILE"; then' \
|
| 93 |
' echo "$arg" >> "$APT_FILE"' \
|
| 94 |
-
' echo "β $arg saved to apt.txt"' \
|
| 95 |
' fi' \
|
| 96 |
' done' \
|
| 97 |
' fi' \
|
|
@@ -125,57 +124,41 @@ RUN printf '%s\n' \
|
|
| 125 |
'' \
|
| 126 |
'mkdir -p /data/persist' \
|
| 127 |
'' \
|
| 128 |
-
'# ββ All persist/restore work runs in background so app starts immediately ββ' \
|
| 129 |
'(' \
|
| 130 |
-
' # ββ Step 1: RESTORE β /data/persist β /root/ ββββββββββββββββββββββββ' \
|
| 131 |
' if [ -d "/data/persist/venv" ] && [ ! -L "/data/persist/venv" ]; then' \
|
| 132 |
-
' echo "βΆ Restoring venv from backup..."' \
|
| 133 |
' rsync -a --ignore-existing /data/persist/venv/ /root/venv/ 2>/dev/null || true' \
|
| 134 |
-
' else' \
|
| 135 |
-
' echo "βΆ No venv backup found, using image default"' \
|
| 136 |
' fi' \
|
| 137 |
' if [ -d "/data/persist/cache" ] && [ ! -L "/data/persist/cache" ]; then' \
|
| 138 |
-
' echo "βΆ Restoring cache from backup..."' \
|
| 139 |
' rsync -a --ignore-existing /data/persist/cache/ /root/.cache/ 2>/dev/null || true' \
|
| 140 |
' fi' \
|
| 141 |
'' \
|
| 142 |
-
' # ββ Step 2: Fix pip ββββββββββββββββββββββββββββββββββββββββββββββββββ' \
|
| 143 |
' rm -f /root/venv/lib/python*/EXTERNALLY-MANAGED' \
|
| 144 |
'' \
|
| 145 |
-
'
|
| 146 |
-
' echo "βΆ Rebuilding backup from /root/venv..."' \
|
| 147 |
-
' rm -rf /data/persist/venv' \
|
| 148 |
-
' rm -rf /data/persist/cache' \
|
| 149 |
' cp -a /root/venv /data/persist/venv' \
|
| 150 |
' cp -a /root/.cache /data/persist/cache 2>/dev/null || true' \
|
| 151 |
-
' echo "βΆ Backup done"' \
|
| 152 |
'' \
|
| 153 |
-
' # ββ Step 4: apt.txt reinstall ββββββββββββββββββββββββββββββββββββββββ' \
|
| 154 |
' APT_FILE="/data/apt.txt"' \
|
| 155 |
' if [ ! -f "$APT_FILE" ]; then touch "$APT_FILE"; fi' \
|
| 156 |
' if [ -s "$APT_FILE" ]; then' \
|
| 157 |
-
'
|
| 158 |
-
' /usr/bin/apt-get update -qq' \
|
| 159 |
' while IFS= read -r pkg || [ -n "$pkg" ]; do' \
|
| 160 |
' pkg=$(echo "$pkg" | tr -d "[:space:]")' \
|
| 161 |
' [ -z "$pkg" ] && continue' \
|
| 162 |
' [ "${pkg#\#}" != "$pkg" ] && continue' \
|
| 163 |
-
' /usr/bin/apt-get install -y --no-install-recommends "$pkg"
|
| 164 |
-
' && echo "β $pkg" \' \
|
| 165 |
-
' || echo "WARNING: Failed to install $pkg"' \
|
| 166 |
' done < "$APT_FILE"' \
|
| 167 |
' rm -rf /var/lib/apt/lists/*' \
|
| 168 |
' fi' \
|
| 169 |
'' \
|
| 170 |
-
' # ββ Step 5: Background sync every 60s βββββββββββββββββββββββββββββββ' \
|
| 171 |
' while true; do' \
|
| 172 |
' sleep 60' \
|
|
|
|
| 173 |
' rsync -a --delete /root/venv/ /data/persist/venv/ 2>/dev/null' \
|
| 174 |
' rsync -a --delete /root/.cache/ /data/persist/cache/ 2>/dev/null' \
|
| 175 |
' done' \
|
| 176 |
') &' \
|
| 177 |
'' \
|
| 178 |
-
'# ββ Start the app immediately βββββββββββββββββββββββββββββββββββββββββββββ' \
|
| 179 |
'exec "$@"' \
|
| 180 |
> /usr/local/bin/docker-entrypoint.sh && \
|
| 181 |
chmod +x /usr/local/bin/docker-entrypoint.sh
|
|
|
|
| 91 |
' case "$arg" in -*) continue ;; esac' \
|
| 92 |
' if ! grep -qx "$arg" "$APT_FILE"; then' \
|
| 93 |
' echo "$arg" >> "$APT_FILE"' \
|
|
|
|
| 94 |
' fi' \
|
| 95 |
' done' \
|
| 96 |
' fi' \
|
|
|
|
| 124 |
'' \
|
| 125 |
'mkdir -p /data/persist' \
|
| 126 |
'' \
|
|
|
|
| 127 |
'(' \
|
|
|
|
| 128 |
' if [ -d "/data/persist/venv" ] && [ ! -L "/data/persist/venv" ]; then' \
|
|
|
|
| 129 |
' rsync -a --ignore-existing /data/persist/venv/ /root/venv/ 2>/dev/null || true' \
|
|
|
|
|
|
|
| 130 |
' fi' \
|
| 131 |
' if [ -d "/data/persist/cache" ] && [ ! -L "/data/persist/cache" ]; then' \
|
|
|
|
| 132 |
' rsync -a --ignore-existing /data/persist/cache/ /root/.cache/ 2>/dev/null || true' \
|
| 133 |
' fi' \
|
| 134 |
'' \
|
|
|
|
| 135 |
' rm -f /root/venv/lib/python*/EXTERNALLY-MANAGED' \
|
| 136 |
'' \
|
| 137 |
+
' rm -rf /data/persist/venv /data/persist/cache' \
|
|
|
|
|
|
|
|
|
|
| 138 |
' cp -a /root/venv /data/persist/venv' \
|
| 139 |
' cp -a /root/.cache /data/persist/cache 2>/dev/null || true' \
|
|
|
|
| 140 |
'' \
|
|
|
|
| 141 |
' APT_FILE="/data/apt.txt"' \
|
| 142 |
' if [ ! -f "$APT_FILE" ]; then touch "$APT_FILE"; fi' \
|
| 143 |
' if [ -s "$APT_FILE" ]; then' \
|
| 144 |
+
' /usr/bin/apt-get update -qq 2>/dev/null' \
|
|
|
|
| 145 |
' while IFS= read -r pkg || [ -n "$pkg" ]; do' \
|
| 146 |
' pkg=$(echo "$pkg" | tr -d "[:space:]")' \
|
| 147 |
' [ -z "$pkg" ] && continue' \
|
| 148 |
' [ "${pkg#\#}" != "$pkg" ] && continue' \
|
| 149 |
+
' /usr/bin/apt-get install -y --no-install-recommends "$pkg" >/dev/null 2>&1 || true' \
|
|
|
|
|
|
|
| 150 |
' done < "$APT_FILE"' \
|
| 151 |
' rm -rf /var/lib/apt/lists/*' \
|
| 152 |
' fi' \
|
| 153 |
'' \
|
|
|
|
| 154 |
' while true; do' \
|
| 155 |
' sleep 60' \
|
| 156 |
+
' mkdir -p /data/persist/venv /data/persist/cache' \
|
| 157 |
' rsync -a --delete /root/venv/ /data/persist/venv/ 2>/dev/null' \
|
| 158 |
' rsync -a --delete /root/.cache/ /data/persist/cache/ 2>/dev/null' \
|
| 159 |
' done' \
|
| 160 |
') &' \
|
| 161 |
'' \
|
|
|
|
| 162 |
'exec "$@"' \
|
| 163 |
> /usr/local/bin/docker-entrypoint.sh && \
|
| 164 |
chmod +x /usr/local/bin/docker-entrypoint.sh
|