- core/auth.py: API Key auth via header X-API-Key (env PDFTOOLKIT_API_KEY) - Modo dev: sem chave configurada → acesso livre - Modo produção: exige chave, retorna 401/403 - api.py: endpoints protegidos com Depends(_auth_required) - /health e / permanecem públicos - Dockerfile: multi-stage (base → api → web) - docker-compose.yml: api + web com healthcheck, volumes e rede - .env.example: template de variáveis de ambiente - README.md: seções de autenticação e Docker
25 lines
1.1 KiB
Python
25 lines
1.1 KiB
Python
"""Adiciona endpoint /healthz para healthcheck do Docker."""
|
|
import streamlit as st
|
|
# O Streamlit não tem roteamento nativo, mas podemos expor via
|
|
# arquivo estático. Para healthcheck do Docker, usamos o seguinte
|
|
# truque: endpoint /healthz no mesmo host.
|
|
# Como Streamlit não permite criar rotas customizadas, o healthcheck
|
|
# será feito via HTTP na própria API (mais confiável).
|
|
# Esta função é apenas um placeholder para documentação.
|
|
"""
|
|
Healthcheck do container web (Streamlit):
|
|
|
|
O Streamlit não expõe endpoints HTTP customizados nativamente.
|
|
Para o healthcheck do Docker, usamos:
|
|
test: ["CMD", "python", "-c", "import http.client; conn=http.client.HTTPConnection('localhost:8550'); conn.request('GET','/'); r=conn.getresponse(); exit(0 if r.status==200 else 1)"]
|
|
|
|
Isso verifica se o servidor Streamlit está respondendo na porta 8550.
|
|
"""
|
|
|
|
# Adiciona uma página de health no sidebar para debug
|
|
def show_health_page():
|
|
st.set_page_config(page_title="Health Check", page_icon="💚")
|
|
st.write("✅ pdf-toolkit web is running")
|
|
|
|
if __name__ == "__main__":
|
|
show_health_page() |