Spaces:
Running
Running
# Use an official Python runtime as a parent image | |
FROM python:3.9-slim | |
# Set the working directory in the container | |
WORKDIR /app | |
# Install system dependencies | |
RUN apt-get update && apt-get install -y \ | |
build-essential \ | |
curl \ | |
software-properties-common \ | |
&& rm -rf /var/lib/apt/lists/* | |
# Copy the requirements file into the container | |
COPY requirements.txt . | |
# Install any needed packages specified in requirements.txt | |
RUN pip install --no-cache-dir -r requirements.txt | |
# Create necessary directories | |
RUN mkdir -p app/pages config data grafana logs /root/.streamlit | |
# Set Python path and Streamlit configs | |
ENV PYTHONPATH=/app \ | |
STREAMLIT_BROWSER_GATHER_USAGE_STATS=false \ | |
STREAMLIT_THEME_PRIMARY_COLOR="#FF4B4B" \ | |
STREAMLIT_SERVER_PORT=8501 \ | |
STREAMLIT_SERVER_ADDRESS=0.0.0.0 | |
# Create empty __init__.py files | |
RUN touch app/__init__.py app/pages/__init__.py | |
# Copy the application code and other files into the container | |
COPY app/ ./app/ | |
COPY config/ ./config/ | |
COPY data/ ./data/ | |
COPY grafana/ ./grafana/ | |
COPY .env ./ | |
COPY .streamlit/config.toml /root/.streamlit/config.toml | |
# Make port 8501 available to the world outside this container | |
EXPOSE 8501 | |
# Create a healthcheck script | |
RUN echo '#!/bin/bash\ncurl -f http://localhost:8501/_stcore/health' > /healthcheck.sh && \ | |
chmod +x /healthcheck.sh | |
# Add healthcheck | |
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ | |
CMD ["/healthcheck.sh"] | |
# Run Streamlit | |
CMD ["streamlit", "run", "app/home.py", "--server.port=8501", "--server.address=0.0.0.0"] |