Spaces:
Sleeping
Sleeping
Create Dockerfile
Browse files- Dockerfile +54 -0
Dockerfile
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# HUGGINGFACE SPACES - DOCKER
|
| 2 |
+
FROM python:3.11-slim
|
| 3 |
+
|
| 4 |
+
# Argumento: URL directa de descarga (usar "resolve", no "blob")
|
| 5 |
+
ARG MODEL_URL="https://huggingface.co/microsoft/bitnet-b1.58-2B-4T-gguf/resolve/main/ggml-model-i2_s.gguf?download=true"
|
| 6 |
+
|
| 7 |
+
# Paquetes necesarios: aria2 (descarga paralela), xz-utils (compresi贸n), coreutils (env vars/du), ca-certificates
|
| 8 |
+
RUN apt-get update && \
|
| 9 |
+
apt-get install -y --no-install-recommends \
|
| 10 |
+
aria2 xz-utils ca-certificates && \
|
| 11 |
+
rm -rf /var/lib/apt/lists/*
|
| 12 |
+
|
| 13 |
+
# Directorio de trabajo y datos
|
| 14 |
+
WORKDIR /workspace
|
| 15 |
+
RUN mkdir -p /data
|
| 16 |
+
|
| 17 |
+
# Script de arranque: descarga, comprime, sirve el server
|
| 18 |
+
# - Usa aria2c con 16 conexiones y segmento 1MiB
|
| 19 |
+
# - Comprime con xz al m谩ximo (-9e) y todos los hilos (-T0) a trav茅s de tar -I
|
| 20 |
+
# - Publica el archivo por HTTP en /data
|
| 21 |
+
RUN printf '%s\n' \
|
| 22 |
+
'#!/usr/bin/env bash' \
|
| 23 |
+
'set -euo pipefail' \
|
| 24 |
+
'MODEL_URL="${MODEL_URL:-}"' \
|
| 25 |
+
'OUT_DIR="/data"' \
|
| 26 |
+
'RAW="${OUT_DIR}/ggml-model-i2_s.gguf"' \
|
| 27 |
+
'TXZ="${OUT_DIR}/ggml-model-i2_s.gguf.tar.xz"' \
|
| 28 |
+
'' \
|
| 29 |
+
'echo "[1/3] Descargando modelo..."' \
|
| 30 |
+
'if [ ! -s "${RAW}" ]; then' \
|
| 31 |
+
' aria2c -x16 -s16 -k1M -o "$(basename "${RAW}")" -d "${OUT_DIR}" "${MODEL_URL}"' \
|
| 32 |
+
'else' \
|
| 33 |
+
' echo "Saltando descarga: existe ${RAW}"' \
|
| 34 |
+
'fi' \
|
| 35 |
+
'' \
|
| 36 |
+
'echo "[2/3] Comprimiendo a tar.xz (m谩xima compresi贸n, multihilo)..."' \
|
| 37 |
+
'if [ ! -s "${TXZ}" ]; then' \
|
| 38 |
+
' # Nota: -I permite pasar el pipeline completo de xz; -9e = m谩ximo, -T0 = todos los hilos' \
|
| 39 |
+
' tar -C "${OUT_DIR}" -c -f "${TXZ}" -I "xz -9e -T0" "$(basename "${RAW}")"' \
|
| 40 |
+
'else' \
|
| 41 |
+
' echo "Saltando compresi贸n: existe ${TXZ}"' \
|
| 42 |
+
'fi' \
|
| 43 |
+
'' \
|
| 44 |
+
'echo "[3/3] Tama帽os:"' \
|
| 45 |
+
'du -h "${RAW}" || true' \
|
| 46 |
+
'du -h "${TXZ}" || true' \
|
| 47 |
+
'' \
|
| 48 |
+
'echo "Listo. Sirviendo /data en http://0.0.0.0:7860/"' \
|
| 49 |
+
'cd "${OUT_DIR}"' \
|
| 50 |
+
'python -m http.server 7860' \
|
| 51 |
+
> /usr/local/bin/run.sh && chmod +x /usr/local/bin/run.sh
|
| 52 |
+
|
| 53 |
+
EXPOSE 7860
|
| 54 |
+
CMD ["/usr/local/bin/run.sh"]
|