decorrupt_files/streamlit/dockerfile
2025-09-15 19:42:18 +00:00

46 lines
1.1 KiB
Plaintext

# ---- base ----
FROM python:3.12-slim
# Prevents Python from writing .pyc files & enables unbuffered logs
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
PIP_NO_CACHE_DIR=1
# System deps (curl used by healthcheck)
RUN apt-get update && apt-get install -y --no-install-recommends curl \
&& rm -rf /var/lib/apt/lists/*
# Create non-root user
RUN useradd -m -u 10001 appuser
WORKDIR /app
# Copy and install Python deps first (better layer caching)
# Create requirements.txt with:
# streamlit
# pandas
# sqlalchemy
# psycopg2-binary
# altair
COPY requirements.txt .
RUN python -m pip install --upgrade pip && pip install -r requirements.txt
# Copy app source
COPY app.py .
# Switch to non-root
USER appuser
# Streamlit defaults
ENV STREAMLIT_SERVER_HEADLESS=true \
STREAMLIT_BROWSER_GATHER_USAGE_STATS=false
# Expose Streamlit port
EXPOSE 8501
# Healthcheck: Streamlit readiness
HEALTHCHECK --interval=30s --timeout=5s --retries=5 \
CMD curl -fsS http://localhost:8501/_stcore/health || exit 1
# Run the app
CMD ["streamlit", "run", "app.py", "--server.port=8501", "--server.address=0.0.0.0"]