anupamdas's picture
Update Dockerfile
c7722f4 verified
Raw
History Blame Contribute Delete
1.63 kB
# Use a slim Python image as a base
FROM python:3.9-slim
# Set the working directory in the container
WORKDIR /app
# Install system dependencies needed for some Python packages
# RUN apt-get update && apt-get install -y \
# build-essential \
# curl \
# software-properties-common \
# git \
# && rm -rf /var/lib/apt/lists/*
# Copy the requirements file first to leverage Docker cache
COPY requirements.txt ./
# Install Python dependencies
RUN pip3 install -r requirements.txt
# This will copy streamlit_app.py, agents.py, the tools/ folder, etc.
COPY . .
# --- START: PERMISSION FIXES FOR HUGGING FACE SPACES ---
# 1. Create the directories your application needs to write to at runtime.
# Using /data is a common and clean convention for persistent/writable data.
# The -p flag ensures parent directories are created if needed.
RUN mkdir -p /app/vectordb/lancedb
# 2. Change the ownership of these new data directories to be globally writable.
# The 777 permission is broad, but very effective in hosted environments where
# you don't know which user ID (e.g., uid=1000) will run the process.
# This command says "any user can read, write, and execute in these folders".
RUN chmod -R 777 /app/vectordb
# --- END: PERMISSION FIXES ---
# Expose the port Streamlit will run on. Your file uses 8501.
EXPOSE 8501
# Set up a health check to see if the app is running
HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health
# Define the command to run when the container starts
ENTRYPOINT ["streamlit", "run", "streamlit_app.py", "--server.port=8501", "--server.address=0.0.0.0"]