AIDA / Dockerfile
Aka18's picture
Update Dockerfile
24f5365 verified
FROM python:3.11-slim
# Create non-root user
RUN useradd --create-home --shell /bin/bash app_user
# Set working directory
WORKDIR /app
# Environment variables
ENV PYTHONUNBUFFERED=1
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONPATH=/app
ENV STREAMLIT_SERVER_HEADLESS=true
ENV STREAMLIT_SERVER_PORT=7860
ENV STREAMLIT_SERVER_ADDRESS=0.0.0.0
ENV MPLCONFIGDIR=/tmp/matplotlib
ENV STREAMLIT_CONFIG_DIR=/tmp/.streamlit
# HUGGING FACE SPACES specific networking fixes
ENV MPLBACKEND=Agg
ENV HTTPX_HTTP2=false
ENV HTTPX_TIMEOUT=180
ENV REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
# Install system dependencies
RUN apt-get update && apt-get install -y \
gcc \
g++ \
curl \
ca-certificates \
&& rm -rf /var/lib/apt/lists/* \
&& apt-get clean
# Copy requirements and install
COPY requirements.txt .
RUN pip install --no-cache-dir --upgrade pip setuptools wheel && \
pip install --no-cache-dir --timeout=600 -r requirements.txt
# Copy application files
COPY . .
# Create necessary directories and set permissions
RUN mkdir -p /tmp/.streamlit /tmp/matplotlib /app/temp && \
chown -R app_user:app_user /app /tmp/.streamlit /tmp/matplotlib
# Switch to non-root user
USER app_user
# Expose port
EXPOSE 7860
# Run Streamlit
CMD ["streamlit", "run", "app.py", \
"--server.port=7860", \
"--server.address=0.0.0.0", \
"--server.headless=true", \
"--server.enableCORS=false", \
"--server.enableXsrfProtection=false", \
"--server.fileWatcherType=none", \
"--browser.gatherUsageStats=false"]