feat: add API Key authentication, Dockerfile, and docker-compose
- 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
This commit is contained in:
25
healthz.py
Normal file
25
healthz.py
Normal file
@@ -0,0 +1,25 @@
|
||||
"""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()
|
||||
Reference in New Issue
Block a user