halocarbon-dashboard / Dockerfile
nbarjun's picture
Update Dockerfile
fbcf103 verified
# 1. Use the official Python image (starts as root)
FROM python:3.12-slim
# 2. Install uv for fast dependency installation
COPY --from=ghcr.io/astral-sh/uv:0.4.20 /uv /bin/uv
# 3. Set the working directory
WORKDIR /app
# 4. Copy requirements and install AS ROOT
# (Root has permission to write to /usr/local/lib/python3.12)
COPY requirements.txt .
ENV UV_SYSTEM_PYTHON=1
RUN uv pip install -r requirements.txt
# 5. Create the non-root user (UID 1000 is required by Hugging Face)
RUN useradd -m -u 1000 user
# 6. Copy the rest of your app and change ownership to the 'user'
COPY . .
RUN chown -R user:user /app
# 7. Switch to the non-root user for security at runtime
USER user
ENV PATH="/home/user/.local/bin:$PATH"
# 8. Tell HF which port to use
EXPOSE 7860
# 9. Start the app (using Gunicorn is recommended for production)
CMD ["gunicorn", "--bind", "0.0.0.0:7860", "--timeout", "120", "app:server"]