40 lines
1.1 KiB
Docker
40 lines
1.1 KiB
Docker
FROM python:3.12-slim
|
|
|
|
ENV PYTHONDONTWRITEBYTECODE=1 \
|
|
PYTHONUNBUFFERED=1 \
|
|
PIP_NO_CACHE_DIR=1 \
|
|
HOST=0.0.0.0 \
|
|
PORT=8000
|
|
|
|
WORKDIR /app
|
|
|
|
# Dependências de sistema para OCR em português
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
tesseract-ocr \
|
|
tesseract-ocr-por \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Instala dependências Python primeiro para aproveitar cache de build
|
|
COPY requirements.txt ./
|
|
|
|
RUN pip install --upgrade pip \
|
|
&& pip install -r requirements.txt
|
|
|
|
# Copia o restante da aplicação
|
|
COPY . .
|
|
|
|
# Prepara diretórios persistentes e usuário sem privilégios
|
|
RUN mkdir -p /app/data /app/data/uploads \
|
|
&& useradd --system --uid 10001 --create-home \
|
|
--home-dir /home/lernotafiscal lernotafiscal \
|
|
&& chown -R lernotafiscal:lernotafiscal /app
|
|
|
|
USER lernotafiscal
|
|
|
|
EXPOSE 8000
|
|
|
|
# APP_MODULE pode ser sobrescrito pelo Coolify/docker-compose.
|
|
# Padrão assumido: app.main:app
|
|
CMD ["sh", "-c", "uvicorn ${APP_MODULE:-app.main:app} --host ${HOST:-0.0.0.0} --port ${PORT:-8000} --proxy-headers --forwarded-allow-ips='*'"]
|