|
|
FROM python:3.11.6-slim |
|
|
|
|
|
|
|
|
ENV PYTHONUNBUFFERED=1 \ |
|
|
PYTHONPATH="/app" \ |
|
|
DEBIAN_FRONTEND=noninteractive |
|
|
|
|
|
|
|
|
RUN apt-get update && apt-get install -y \ |
|
|
build-essential \ |
|
|
libglib2.0-0 \ |
|
|
libsm6 \ |
|
|
libxrender1 \ |
|
|
libxext6 \ |
|
|
git \ |
|
|
curl \ |
|
|
wget \ |
|
|
procps \ |
|
|
&& apt-get clean \ |
|
|
&& rm -rf /var/lib/apt/lists/* |
|
|
|
|
|
|
|
|
RUN groupadd -r appuser && useradd -r -g appuser appuser |
|
|
|
|
|
|
|
|
WORKDIR /app |
|
|
|
|
|
|
|
|
COPY requirements.txt /app/ |
|
|
RUN pip install --no-cache-dir --upgrade pip && \ |
|
|
pip install --no-cache-dir -r requirements.txt |
|
|
|
|
|
|
|
|
COPY . /app |
|
|
|
|
|
|
|
|
RUN mkdir -p /tmp/data /tmp/model /tmp/logs /app/logs && \ |
|
|
chmod -R 755 /tmp/data /tmp/model /tmp/logs /app/logs |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RUN chmod +x /app/start.sh /app/health_check.sh |
|
|
|
|
|
|
|
|
RUN if [ -f /app/data/combined_dataset.csv ]; then \ |
|
|
cp /app/data/combined_dataset.csv /tmp/data/; \ |
|
|
fi |
|
|
|
|
|
|
|
|
RUN python /app/initialize_system.py |
|
|
|
|
|
|
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ |
|
|
CMD /app/health_check.sh |
|
|
|
|
|
|
|
|
RUN chown -R appuser:appuser /app /tmp/data /tmp/model /tmp/logs |
|
|
|
|
|
|
|
|
USER appuser |
|
|
|
|
|
|
|
|
EXPOSE 7860 8000 |
|
|
|
|
|
|
|
|
CMD ["./start.sh"] |