Passa al contenuto principale

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​

  1. 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)
  2. Avvia lo stack.

    make compose-up costruisce afe:dev, avvia ogni servizio e aspetta gli healthcheck. make compose-down lo 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:9464
    make compose-down
  3. Ferma tutto quando hai finito.

    make down ferma ogni servizio di sviluppo che questo repository può avviare: lo stack Compose con Postgres e Redis, Langfuse, il collector OpenTelemetry e il cluster kind afe. Tenta ogni arresto anche quando uno fallisce, segnala i fallimenti ed esce con codice diverso da zero. Lascia intatti volumi e dati.

    make down
  4. make services resta 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.

Vedi anche​