FROM python:3.11-slim # Boas práticas de runtime ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1 \ PIP_DISABLE_PIP_VERSION_CHECK=1 # Dependências básicas do sistema (certificados TLS etc.) RUN apt-get update \ && apt-get install -y --no-install-recommends ca-certificates \ && rm -rf /var/lib/apt/lists/* # Cria usuário padrão do HF (uid 1000) RUN useradd -m -u 1000 user WORKDIR /home/user/app # Instala deps primeiro (melhor cache) COPY requirements.txt ./requirements.txt RUN python -m pip install --upgrade pip \ && python -m pip install -r requirements.txt # Copia o código COPY . . # Pasta do SQLite (e garante permissão para o usuário) RUN mkdir -p /home/user/app/data \ && chown -R user:user /home/user/app USER user # HF expõe PORT via env; fallback 7860 ENV PORT=7860 EXPOSE 7860 CMD ["sh", "-c", "uvicorn server:app --host 0.0.0.0 --port ${PORT}"]