trainSpace / Dockerfile
pathii's picture
Update Dockerfile
a84855d verified
# Stage 1: Builder with full compilation environment
FROM python:3.8-bullseye as builder
# Install comprehensive build tools
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
cmake \
git \
curl \
wget \
libopenblas-dev \
libssl-dev \
zlib1g-dev \
libbz2-dev \
libncurses5-dev \
libffi-dev \
liblzma-dev \
&& rm -rf /var/lib/apt/lists/*
# Create and use virtual environment
RUN python -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
# Install packages with precise order and fallbacks
COPY requirements.txt .
RUN pip install --upgrade pip setuptools wheel && \
pip install torch==2.2.1 --index-url https://download.pytorch.org/whl/cpu && \
pip install ninja==1.11.1 && \
pip install transformers==4.38.2 && \
pip install accelerate==0.27.2 && \
pip install datasets==2.18.0 && \
pip install huggingface_hub==0.20.3 && \
{ pip install deepspeed==0.13.1 || pip install deepspeed==0.13.1 --no-deps; } && \
pip install unsloth==0.2.0 && \
{ pip install vllm==0.3.0 || pip install vllm==0.3.0 --no-deps; } && \
pip install fastapi==0.109.1 uvicorn==0.27.0
# Stage 2: Slim runtime image
FROM python:3.8-slim
# Copy virtual env from builder
COPY --from=builder /opt/venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
# Install runtime dependencies only
RUN apt-get update && apt-get install -y --no-install-recommends \
libopenblas-base \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY . /app
# Verify installation
RUN python -c "import torch; print(f'PyTorch {torch.__version__} installed')" && \
python -c "from transformers import __version__; print(f'Transformers {__version__} installed')"
CMD ["python", "train.py"]