igorai_demo / Dockerfile
jan-topinski's picture
Update from brunch
ea01116 verified
raw
history blame
1.23 kB
FROM ghcr.io/astral-sh/uv:0.7.6-python3.11-bookworm
# Set environment variables
ENV PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1 \
PORT=8080 \
HF_HOME=/workspace \
SPACE_ID=""
# Check if we're running in a HF Space
ENV IS_HF_SPACE=${SPACE_ID:+1}
# Set cache directory based on IS_HF_SPACE
RUN export CACHE_DIR=${IS_HF_SPACE:+/workspace/hub/.cache} && \
export CACHE_DIR=${IS_HF_SPACE:-/app/.cache}
# Ensure we use the virtual environment's Python
ENV PATH=/app/.venv/bin:$PATH
# Set working directory
WORKDIR /app
# Copy only necessary files first
COPY pyproject.toml uv.lock ./
COPY token.json ./
COPY app/ ./app/
# Install dependencies
RUN uv sync
EXPOSE 8080
# Create and set permissions for workspace and cache directories
RUN mkdir -p /workspace/hub/.cache && \
chmod -R 777 /workspace && \
mkdir -p /app/.cache && \
chmod -R 777 /app/.cache
# Copy token.json to /workspace
COPY token.json /workspace/
# Create a non-root user
RUN useradd -m -u 1000 user && \
chown -R user /workspace
# Switch to non-root user
USER user
# Set up volume after user configuration
VOLUME /workspace
# Run the app and tools_server.py
CMD uvicorn app.api.tools_server:app --host 0.0.0.0 --port 8080