# Usa Debian como base
FROM debian:bookworm-slim

# Definir el directorio de trabajo
WORKDIR /app

# Instalar dependencias necesarias
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
    bash \
    curl \
    gnupg \
    apt-transport-https \
    wget \
    build-essential \
    libncursesw5-dev \
    libssl-dev \
    libsqlite3-dev \
    tk-dev \
    libgdbm-dev \
    libc6-dev \
    libbz2-dev \
    libffi-dev \
    zlib1g-dev \
    git \
    ca-certificates && \
    rm -rf /var/lib/apt/lists/*

# Descargar e instalar Python 3.10
RUN wget https://www.python.org/ftp/python/3.10.16/Python-3.10.16.tgz --no-check-certificate && \
    tar xzf Python-3.10.16.tgz && \
    cd Python-3.10.16 && \
    ./configure --enable-optimizations && \
    make altinstall && \
    ln -s /usr/local/bin/python3.10 /usr/bin/python && \
    cd .. && \
    rm -rf Python-3.10.16*

# Verificar la instalación de Python y pip
RUN python --version && pip3.10 --version

# Descargar e instalar code-server de manera explícita
RUN curl -fsSL https://code-server.dev/install.sh | sh && \
    if [ ! -f /usr/bin/code-server ]; then ln -s $(which code-server) /usr/bin/code-server; fi && \
    which code-server && \
    code-server --version



# Instalar Node.js 22
RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - && \
    apt-get install -y nodejs && \
    node -v && npm -v


# Habilitar el uso de corepack
RUN corepack enable

# Definir el directorio de trabajo
WORKDIR /app/frontend

# Copiar archivos desde la carpeta local
COPY vite-template/ .


# Instalar dependencias para evitar `npm install` en cada arranque
RUN npm install



# Crear la estructura de carpetas y asegurar permisos
RUN mkdir -p /app/backend /app/host_transfer && \
    chmod -R 777 /app/backend /app/host_transfer

# Crear la carpeta en la raíz del contenedor
RUN mkdir -p /app/share && chmod 777 /app/share




# Copiar el script de inicio
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

# Exponer el puerto por defecto de code-server
EXPOSE 8080 5173

# Definir el usuario y grupo de trabajo
USER root

# Comando para iniciar code-server y react como root
ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]


