Far girare tutto lo stack con Compose
Fai girare insieme, su una sola macchina, Postgres, Redis, l'API con la web UI e un worker.
docker/compose.yml tiene i servizi di default, Postgres e Redis, per make services. Aggiunge
anche un profilo stack con serve --ui e un worker sulla stessa rete.
Prerequisiti
- Docker, con Compose.
make.
Passi
-
Copia il file d'ambiente e riempilo:
cp .env.example .env# imposta AFE_API_TOKEN e OPENROUTER_API_KEY (o la chiave che nomina il tuo Model) -
Avvia lo stack.
make compose-upcostruisceafe:dev, avvia ogni servizio e aspetta gli healthcheck.make compose-downlo ferma e rimuove i container.make compose-up# UI e API su http://127.0.0.1:8765, ops su http://127.0.0.1:9464make compose-down -
Ferma tutto quando hai finito.
make downferma ogni servizio di sviluppo che questo repository può avviare: lo stack Compose con Postgres e Redis, Langfuse, il collector OpenTelemetry e il cluster kindafe. Tenta ogni arresto anche quando uno fallisce, segnala i fallimenti ed esce con codice diverso da zero. Lascia intatti volumi e dati.make down -
make servicesresta invariato. Avvia solo Postgres e Redis per i test.
Il socket Docker
Il worker monta /var/run/docker.sock per poter aprire il container sandbox di un ticket. Il
socket è una scelta solo da laptop, mai da cluster.
Il container gira come utente non-root, quindi gli serve il gruppo che possiede il socket.
make compose-up legge DOCKER_GID da .env, 0 di default. Impostalo al gruppo Docker del tuo
host quando il default non basta:
DOCKER_GID=$(getent group docker | cut -d: -f3)
La configurazione vive in deploy/kind/config/, montata su /config. Contiene un Runtime che
legge DSN dello store e URL del broker dall'ambiente, e un flow di esempio.
Limiti di risorsa
Ogni container imposta un limite di CPU e di memoria, così un servizio sotto carico non può
affamare la macchina. I valori stanno in docker/compose.yml e sono un punto di partenza prudente
per una macchina condivisa. Abbassali su un host piccolo, alzali quando un servizio viene limitato.
Risoluzione dei problemi
Sintomo: afe serve -c /config nel container serve continua a riavviarsi.
Causa: AFE_API_TOKEN è vuoto in .env, quindi il server rifiuta di partire.
Rimedio: imposta AFE_API_TOKEN in .env e riesegui make compose-up.
Sintomo: il worker registra un errore di permessi nell'aprire il container sandbox.
Causa: DOCKER_GID in .env non combacia con il gruppo che possiede
/var/run/docker.sock sull'host.
Rimedio: imposta DOCKER_GID con il comando sopra, poi riavvia lo stack.
Sintomo: make compose-up fallisce perché la porta 8765 o 9464 è già occupata.
Causa: un altro processo afe serve, o uno stack precedente, è già collegato a quella porta.
Rimedio: fermalo prima, per esempio con make down, poi riesegui make compose-up.