Spaces:
Sleeping
Sleeping
| # Read the doc: https://huggingface.co/docs/hub/spaces-sdks-docker | |
| # you will also find guides on how best to write your Dockerfile | |
| FROM python:3.11-slim AS builder | |
| # Instalar herramientas necesarias solo en el stage de build | |
| RUN apt-get update \ | |
| && apt-get install -y --no-install-recommends build-essential gcc libffi-dev wget ca-certificates tar \ | |
| && rm -rf /var/lib/apt/lists/* | |
| WORKDIR /app | |
| # Copiar requirements e instalar en un prefijo temporal (/install) | |
| COPY requirements.txt ./requirements.txt | |
| RUN python -m pip install --upgrade pip setuptools wheel \ | |
| && python -m pip install --no-cache-dir --prefix=/install -r requirements.txt | |
| # Descargar y extraer openvscode-server en el stage de build (no queda en la imagen final si no se copia) | |
| RUN wget https://github.com/gitpod-io/openvscode-server/releases/download/openvscode-server-v1.101.2/openvscode-server-v1.101.2-linux-x64.tar.gz -O /tmp/openvscode-server.tar.gz \ | |
| && tar -xzf /tmp/openvscode-server.tar.gz -C /opt \ | |
| && rm /tmp/openvscode-server.tar.gz \ | |
| && mv /opt/openvscode-server-v1.101.2-linux-x64 /opt/openvscode-server \ | |
| && chown -R 1000:1000 /opt/openvscode-server | |
| # --- Final minimal image --- | |
| FROM python:3.11-slim | |
| # Crear user no-root recomendado por Spaces | |
| RUN useradd -m -u 1000 user | |
| ENV PATH="/home/user/.local/bin:$PATH" | |
| ENV PYTHONDONTWRITEBYTECODE=1 | |
| ENV PYTHONUNBUFFERED=1 | |
| WORKDIR /app | |
| # Copiar los paquetes instalados desde el builder al entorno de runtime | |
| COPY --from=builder /install /usr/local | |
| # Copiar openvscode desde el builder (ya está listo en /opt/openvscode-server) | |
| COPY --from=builder /opt/openvscode-server /opt/openvscode-server | |
| RUN chown -R 1000:1000 /opt/openvscode-server || true | |
| # Copiar código y asignar al user no-root | |
| COPY --chown=user:user . /app | |
| USER user | |
| EXPOSE 7860 | |
| CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"] | |