feat: initial implementation taller-wox.fitlabs.dev
Portal FastAPI + 5 endpoints REST para Bootcamp Agentic AI con watsonx Orchestrate (FactorIT). Single container, Coolify-ready. - Landing brandeado FIT con formulario de registro (honeypot anti-bot) - Tokens itsdangerous para descargas (24h expiry) - 5 endpoints API: historical/available procedures, member-insights, schedule, generate-report (Jinja2 + Plotly) - SQLite con upsert-on-email para leads + log de descargas - Admin endpoints (HTTP Basic): leads.json, leads.csv, stats - 23 tests pytest pasando - Dockerfile listo para Coolify con volúmenes persistentes (/app/leads.db, /app/app/data/reports_output, /app/material) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
43
docker-compose.yml
Normal file
43
docker-compose.yml
Normal file
@@ -0,0 +1,43 @@
|
||||
## taller-wox.fitlabs.dev — Stack productivo Coolify
|
||||
##
|
||||
## Single container FastAPI. Coolify autodetecta este compose; el FQDN
|
||||
## se setea en el panel del servicio `app` y Coolify completa las
|
||||
## labels Traefik faltantes (router HTTPS, Let's Encrypt cert).
|
||||
|
||||
services:
|
||||
|
||||
app:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
image: taller-wox:latest
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- "8000"
|
||||
environment:
|
||||
SECRET_KEY: ${SECRET_KEY}
|
||||
ADMIN_USER: ${ADMIN_USER:-admin}
|
||||
ADMIN_PASS: ${ADMIN_PASS}
|
||||
TOKEN_EXPIRY_HOURS: ${TOKEN_EXPIRY_HOURS:-24}
|
||||
BASE_URL: ${BASE_URL:-https://taller-wox.fitlabs.dev}
|
||||
MATERIAL_DIR: /app/material
|
||||
DB_PATH: /app/db/leads.db
|
||||
REPORTS_OUTPUT_DIR: /app/app/data/reports_output
|
||||
volumes:
|
||||
- taller-wox-db:/app/db
|
||||
- taller-wox-reports:/app/app/data/reports_output
|
||||
- taller-wox-material:/app/material
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-sf", "http://localhost:8000/health"]
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
start_period: 15s
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.docker.network=coolify"
|
||||
|
||||
volumes:
|
||||
taller-wox-db:
|
||||
taller-wox-reports:
|
||||
taller-wox-material:
|
||||
Reference in New Issue
Block a user