| |
| 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 |
|
|
| |
| 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/* |
|
|
| |
| 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 |
|
|
| |
| 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 |
|
|
| |
| 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 |
|
|
| |
| COPY . /app |
|
|
| |
| 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 |
|
|
| |
| EXPOSE 7860 |
| ENV STREAMLIT_BROWSER_GATHER_USAGE_STATS=false |
| CMD ["streamlit", "run", "app.py", "--server.port=7860", "--server.address=0.0.0.0"] |
|
|