File size: 1,571 Bytes
511bc62
 
da5c857
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96dcb2f
 
da5c857
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
511bc62
da5c857
b26378c
 
 
da5c857
 
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
#!/bin/bash

# Función para manejar errores
handle_error() {
    echo "Error: $1"
    exit 1
}

# Verificar y crear el directorio /data si no existe
if [ ! -d "/data" ]; then
    mkdir -p /data || handle_error "No se pudo crear el directorio /data"
    echo "Directorio /data creado para almacenamiento persistente"
fi

# Verificar permisos del directorio /data
if [ ! -w "/data" ]; then
    echo "Advertencia: No se tienen permisos de escritura en /data. Algunos datos pueden no ser persistentes."
fi

# Asegurar que el usuario jovyan sea el propietario de /data
chown -R ${NB_UID}:${NB_GID} /data

# Leer el token de JupyterLab del secreto de HF
JUPYTERLAB_TOKEN=$(cat /run/secrets/JUPYTER_TOKEN)

# Verificar si el token está vacío
if [ -z "$JUPYTERLAB_TOKEN" ]; then
    handle_error "El token de JupyterLab está vacío"
fi

# Verificar disponibilidad de GPU
if command -v nvidia-smi &> /dev/null; then
    echo "GPU detectada. Configurando entorno para uso de GPU."
    export NVIDIA_VISIBLE_DEVICES=all
    export NVIDIA_DRIVER_CAPABILITIES=compute,utility
else
    echo "No se detectó GPU. Se utilizará CPU."
fi

# Iniciar JupyterLab en segundo plano
jupyter lab --ip=0.0.0.0 --port=${JUPYTERLAB_PORT} --no-browser --allow-root \
    --NotebookApp.base_url=/jupyter --NotebookApp.token=${JUPYTERLAB_TOKEN} \
    --notebook-dir=/data &

# Asegurar que el archivo PID de Nginx sea escribible
touch /tmp/nginx.pid
chmod 644 /tmp/nginx.pid

# Iniciar Nginx en primer plano
nginx -g "daemon off;" -c /etc/nginx/nginx.conf || handle_error "Fallo al iniciar Nginx"