File size: 3,929 Bytes
cf37fd5
c096a7a
3102b05
c096a7a
 
 
 
3102b05
c096a7a
 
3102b05
cf37fd5
c096a7a
3102b05
dc7d63c
3102b05
 
 
c096a7a
cf37fd5
3102b05
 
 
 
cf37fd5
3102b05
 
 
 
 
 
 
 
 
 
cf37fd5
3102b05
 
cf37fd5
3102b05
 
 
 
 
 
 
cf37fd5
3102b05
 
 
 
 
 
 
c096a7a
3102b05
 
c096a7a
3102b05
c096a7a
 
3102b05
c096a7a
 
3102b05
c096a7a
 
3102b05
c096a7a
 
 
3102b05
c096a7a
 
3102b05
c096a7a
 
 
3102b05
c096a7a
 
3102b05
b2c867c
 
c096a7a
3102b05
 
 
7006a4d
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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"]