TecLaguna commited on
Commit
dd752e5
·
verified ·
1 Parent(s): 339839f

Create Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +74 -0
Dockerfile ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Usa una imagen base optimizada de Python 3.10
2
+ FROM python:3.10
3
+
4
+ # Define variables de entorno
5
+ ENV HOST=0.0.0.0
6
+ ENV LISTEN_PORT=7860
7
+
8
+ # Expone el puerto 7860 para que se pueda acceder desde fuera del contenedor
9
+ EXPOSE 7860
10
+
11
+ # Actualiza el sistema e instala dependencias necesarias (ejecutado como root)
12
+ RUN apt-get update && apt-get install -y \
13
+ libgl1-mesa-glx \
14
+ libglib2.0-0 \
15
+ poppler-utils \
16
+ tesseract-ocr \
17
+ gcc \
18
+ g++ \
19
+ make \
20
+ wget \
21
+ libsqlite3-dev \
22
+ sqlite3 \
23
+ zlib1g-dev \
24
+ libssl-dev \
25
+ libffi-dev \
26
+ libncurses5-dev \
27
+ libncursesw5-dev \
28
+ libreadline-dev \
29
+ libbz2-dev \
30
+ liblzma-dev \
31
+ && rm -rf /var/lib/apt/lists/*
32
+
33
+ # Descargar y compilar una versión compatible de SQLite
34
+ RUN wget https://www.sqlite.org/2024/sqlite-autoconf-3450100.tar.gz && \
35
+ tar -xzf sqlite-autoconf-3450100.tar.gz && \
36
+ cd sqlite-autoconf-3450100 && \
37
+ ./configure --prefix=/usr && \
38
+ make && \
39
+ make install && \
40
+ cd .. && \
41
+ rm -rf sqlite-autoconf-3450100 sqlite-autoconf-3450100.tar.gz
42
+
43
+ # Verificar la versión de SQLite instalada
44
+ RUN sqlite3 --version
45
+
46
+ # Recompilar Python para que use la nueva versión de SQLite
47
+ RUN wget https://www.python.org/ftp/python/3.10.13/Python-3.10.13.tgz && \
48
+ tar -xzf Python-3.10.13.tgz && \
49
+ cd Python-3.10.13 && \
50
+ ./configure --enable-optimizations --with-ensurepip=install && \
51
+ make && \
52
+ make install && \
53
+ cd .. && \
54
+ rm -rf Python-3.10.13 Python-3.10.13.tgz
55
+
56
+ # Verificar que Python usa la nueva versión de SQLite
57
+ RUN python3 -c "import sqlite3; print('SQLite Version:', sqlite3.sqlite_version)"
58
+
59
+ # 🔹 Ahora creamos el usuario y cambiamos permisos
60
+ RUN useradd -m -u 1000 user
61
+ USER user
62
+ ENV HOME=/home/user \
63
+ PATH=/home/user/.local/bin:$PATH
64
+ WORKDIR $HOME/app
65
+
66
+ # Copia el archivo de dependencias y las instala sin caché para optimizar el tamaño del contenedor
67
+ COPY --chown=user requirements.txt .
68
+ RUN pip install --no-cache-dir --upgrade -r requirements.txt
69
+
70
+ # Copia el código fuente de la aplicación al contenedor
71
+ COPY --chown=user . .
72
+
73
+ # Comando por defecto al iniciar el contenedor
74
+ CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]