MogensR's picture
Update Dockerfile
3263a81
raw
history blame
2.31 kB
# ==== GPU base (CUDA 12.8 + cuDNN, Ubuntu 22.04) ====
FROM nvidia/cuda:12.8.0-cudnn-runtime-ubuntu22.04
ENV DEBIAN_FRONTEND=noninteractive \
PIP_NO_CACHE_DIR=1 \
HF_HUB_ENABLE_HF_TRANSFER=1 \
HUGGINGFACE_HUB_CACHE=/data/hf_cache \
TRANSFORMERS_CACHE=/data/hf_cache \
TORCH_HOME=/data/torch \
MPLCONFIGDIR=/tmp/mpl
RUN mkdir -p /data/hf_cache /data/torch /app && chmod -R 777 /data
WORKDIR /app
# ---- Core tools ----
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates wget curl git git-lfs \
python3 python3-pip python3-venv python3-dev \
build-essential pkg-config \
&& git lfs install \
&& rm -rf /var/lib/apt/lists/*
# ---- Optional APT from packages.txt (comments filtered) ----
COPY packages.txt /tmp/packages.txt
RUN set -eux; \
if [ -s /tmp/packages.txt ]; then \
apt-get update; \
tr -d '\r' < /tmp/packages.txt \
| sed 's/#.*$//' \
| awk 'NF{print $1}' > /tmp/pkg.list; \
echo "APT installing:"; cat /tmp/pkg.list || true; \
xargs -r apt-get install -y --no-install-recommends < /tmp/pkg.list || true; \
rm -rf /var/lib/apt/lists/*; \
else \
echo "No packages.txt or empty — skipping APT extras."; \
fi
# ---- PyTorch wheels (cu121) — OK on CUDA 12.8 runtime ----
RUN python3 -m pip install --upgrade pip
RUN python3 -m pip install --index-url https://download.pytorch.org/whl/cu121 \
torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1
# ---- Python deps ----
COPY requirements.txt /tmp/requirements.txt
RUN if [ -s /tmp/requirements.txt ]; then \
python3 -m pip install -r /tmp/requirements.txt; \
else \
echo "No requirements.txt or empty; skipping."; \
fi
# ---- App code ----
COPY . /app
# (Optional) show GPU info in logs
RUN python3 - << 'PY'
import torch, os
print("== PyTorch ==", torch.__version__)
print("CUDA available:", torch.cuda.is_available(), "devices:", torch.cuda.device_count())
if torch.cuda.is_available(): print("GPU0:", torch.cuda.get_device_name(0))
print("HF cache:", os.getenv("HUGGINGFACE_HUB_CACHE"))
PY
# ---- Streamlit on HF Spaces (port 7860) ----
EXPOSE 7860
ENV STREAMLIT_BROWSER_GATHER_USAGE_STATS=false
CMD ["streamlit", "run", "app.py", "--server.port=7860", "--server.address=0.0.0.0"]