File size: 2,090 Bytes
c49b21b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
###############################
# Gradio-optimized Dockerfile
###############################
FROM python:3.11-slim
WORKDIR /app

# Install system dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
    gcc \
    libgomp1 \
    supervisor \
    && rm -rf /var/lib/apt/lists/* \
    && apt-get clean

# Copy requirements and install Python dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt \
    && pip cache purge

# Create necessary directories
RUN mkdir -p /data/logs \
    && mkdir -p /data/merged/features \
    && mkdir -p /data/merged/train \
    && mkdir -p /data/alpaca \
    && mkdir -p /data/advisorai-data \
    && mkdir -p /data/nltk_data \
    && chmod -R 777 /data

# Copy application code
COPY . .

# Set executable permissions
RUN chmod +x /app/deployment/gradio_entrypoint.sh

# Set environment variables
ENV PYTHONPATH=/app:/app/src
ENV PYTHONUNBUFFERED=1
ENV PYTHONIOENCODING=utf-8
ENV NLTK_DATA=/data/nltk_data

# Create simplified supervisord config for Gradio
RUN echo '[supervisord]\n\
nodaemon=true\n\
logfile=/dev/stdout\n\
logfile_maxbytes=0\n\
pidfile=/tmp/supervisord.pid\n\
loglevel=info\n\
\n\
[program:gradio]\n\
command=python /app/app.py\n\
directory=/app\n\
autostart=true\n\
autorestart=true\n\
stdout_logfile=/dev/stdout\n\
stderr_logfile=/dev/stderr\n\
stdout_logfile_maxbytes=0\n\
stderr_logfile_maxbytes=0\n\
startsecs=10\n\
startretries=3\n\
stopwaitsecs=30\n\
killasgroup=true\n\
stopasgroup=true\n\
environment=PYTHONPATH="/app:/app/src"\n\
\n\
[program:scheduler]\n\
command=/bin/sh -c "sleep 180 && python /app/deployment/scheduler.py"\n\
directory=/app\n\
autostart=true\n\
autorestart=true\n\
startsecs=0\n\
stdout_logfile=/dev/stdout\n\
stderr_logfile=/dev/stderr\n\
stdout_logfile_maxbytes=0\n\
stderr_logfile_maxbytes=0\n\
startretries=3\n\
stopwaitsecs=60\n\
killasgroup=true\n\
stopasgroup=true' > /etc/supervisord_gradio.conf

ENTRYPOINT ["/app/deployment/gradio_entrypoint.sh"]

# Expose Gradio port
EXPOSE 7860

CMD ["supervisord", "-c", "/etc/supervisord_gradio.conf"]