# Compose del servicio en Coolify. # # Por qué existe este archivo y no un despliegue git-based normal: # la API REST de esta instancia de Coolify no expone creación de aplicaciones # (todas las rutas /applications/* responden 404, verificado en 4.1.2 y 4.3.12), # y la interfaz web reportaba "No available server". La única ruta de creación # que sí responde es POST /services con un compose. Como un servicio de Coolify # no clona un repositorio, la imagen se construye aparte —dentro del LXC donde # corre Coolify, desde el repo público de Gitea— y aquí solo se consume. # # Consecuencia operativa, y hay que tenerla presente: un push a Gitea NO # redespliega solo. Para publicar una versión nueva hay que reconstruir la # imagen en el host y reiniciar el servicio. Está documentado en # docs/DESPLIEGUE.md. # # SERVICE_FQDN_WEB_3000 es la convención de Coolify: al declararla, Coolify # genera el dominio y las etiquetas de Traefik para el puerto 3000 del servicio # `web`, y se encarga del certificado. services: web: image: fspm-web:demo restart: unless-stopped environment: - SERVICE_FQDN_WEB_3000 - NODE_ENV=production - HOSTNAME=0.0.0.0 - PORT=3000 # Ruta absoluta a propósito: una relativa se resuelve contra la carpeta # del esquema de Prisma y es el clásico "funciona en local, falla aquí". - DATABASE_URL=file:/app/data/fspm.db - AUTH_SECRET=${AUTH_SECRET} # El acceso rápido por perfil queda encendido porque la demo se enseña # acompañada. Apagarlo es cambiar esto a false y reiniciar. - DEMO_ACCESO_RAPIDO=true # Techo de envíos por IP en diez minutos. Veinte frena a un bot y deja # respirar una demostración con varias personas en la misma red. - LEADS_MAX_ENVIOS=20 volumes: # Aquí vive el SQLite y TIENE que sobrevivir a los redespliegues. Sin # este volumen la falla es silenciosa: el contenedor arranca con los # datos sembrados y nadie nota nada hasta que se pierde un lead real. - fspm-datos:/app/data healthcheck: # La sonda consulta la base, así que un volumen no escribible se reporta # como contenedor enfermo en vez de pasar por sano. test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://127.0.0.1:3000/api/salud"] interval: 30s timeout: 5s start_period: 60s retries: 3 volumes: fspm-datos: