gs_final / Dockerfile
Jaocs's picture
dockerfile fix
7006a4d
FROM nvidia/cuda:12.1.1-devel-ubuntu22.04
# Configura las variables de entorno para CUDA (a nivel de sistema).
ENV CUDA_HOME=/usr/local/cuda-12.1
ENV LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
ENV PATH=$CUDA_HOME/bin:$PATH
# Define las arquitecturas CUDA para la compilaci贸n de kernels.
ENV TORCH_CUDA_ARCH_LIST="7.0 7.5 8.0 8.6 8.9 9.0+PTX"
# Instala las dependencias del sistema operativo necesarias como root.
# Estas instalaciones no dependen del WORKDIR.
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y \
build-essential wget nano curl ninja-build unzip libgl-dev ffmpeg \
libgl1-mesa-glx libsm6 libxext6 && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# --- Configuraci贸n de usuario no-root para seguridad y permisos ---
# Crea un nuevo usuario llamado "user" con UID 1000 y su directorio home.
RUN useradd -m -u 1000 user
# Instala Miniconda en el directorio home del nuevo usuario.
# Aseguramos que el script de instalaci贸n y el directorio de conda sean propiedad del usuario.
ENV CONDA_DIR=/home/user/miniconda
RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /home/user/miniconda.sh && \
chown user:user /home/user/miniconda.sh && \
/bin/bash /home/user/miniconda.sh -b -p $CONDA_DIR && \
rm /home/user/miniconda.sh && \
chown -R user:user $CONDA_DIR
# Cambia al usuario no-root "user". Todas las instrucciones posteriores se ejecutar谩n como este usuario.
USER user
# Establece el directorio HOME y actualiza el PATH para el nuevo usuario.
# Incluye variables de entorno espec铆ficas para Hugging Face Spaces y Gradio.
ENV HOME=/home/user \
PATH=$CONDA_DIR/bin:$PATH \
PYTHONPATH=/home/user/app \
PYTHONUNBUFFERED=1 \
GRADIO_ALLOW_FLAGGING=never \
GRADIO_NUM_PORTS=1 \
GRADIO_SERVER_NAME=0.0.0.0 \
GRADIO_THEME=huggingface \
SYSTEM=spaces
# Establece el directorio de trabajo final para la aplicaci贸n bajo el usuario.
WORKDIR $HOME/app
# Copia todo el c贸digo fuente de tu proyecto al directorio de trabajo del usuario,
# asegurando que los archivos sean propiedad del usuario.
COPY --chown=user . $HOME/app/
# Configura Conda para usar el solucionador libmamba, que es m谩s r谩pido y robusto.
RUN conda update -n base conda -y && \
conda install -n base conda-libmamba-solver -y && \
conda config --set solver libmamba
# Crea el entorno Conda espec铆fico para EDGS con Python 3.10 y pip.
RUN conda create -y -n edgs python=3.10 pip
# Establece el SHELL por defecto para los comandos RUN, CMD, ENTRYPOINT para este usuario.
SHELL ["conda", "run", "-n", "edgs", "/bin/bash", "-c"]
# Instala PyTorch, torchvision y torchaudio con soporte CUDA 12.1.
RUN conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia -y
# Instala los paquetes que requieren compilaci贸n de extensiones CUDA en modo editable.
RUN pip install -e submodules/gaussian-splatting/submodules/diff-gaussian-rasterization --no-build-isolation && \
pip install -e submodules/gaussian-splatting/submodules/simple-knn --no-build-isolation
# Instala pycolmap, una librer铆a Python para COLMAP.
RUN pip install pycolmap
# Instala otras dependencias de Python.
RUN pip install wandb hydra-core tqdm torchmetrics lpips matplotlib rich plyfile imageio imageio-ffmpeg && \
conda install numpy=1.26.4 -y -c conda-forge --override-channels
# Instala el m贸dulo RoMa en modo editable.
RUN pip install -e submodules/RoMa
# Instala Jupyter y otras herramientas para interfaz de usuario y visualizaci贸n.
RUN pip install plotly scikit-learn moviepy==2.1.1 ffmpeg && \
pip install fastapi[standard]
# Documenta el puerto que la aplicaci贸n expone.
EXPOSE 7860
CMD ["/bin/bash", "-c", "source /home/user/miniconda/bin/activate edgs && exec uvicorn main:app --host 0.0.0.0 --port 7860"]
#CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"]