mirror of
https://github.com/vxcontrol/pentagi.git
synced 2026-08-24 12:06:36 +00:00
The base compose file pins fixed network names, so any network left un-overridden in this e2e override joins the stack to the developer's live observability and langfuse networks. Give all three networks e2e-scoped names. Add a healthcheck to the mock-LLM service and make pentagi depend on service_healthy, so a crash-looping mock can never read as a started dependency and silently mask itself. Update frontend/docs/e2e.md to match reality: the stand tier runs @stand only (flow-run drives a real paid agent and stays local), every mock run rebuilds its own bundle by design, and the trend/affected-routes notes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
73 lines
2.4 KiB
YAML
73 lines
2.4 KiB
YAML
# Tier-2 e2e stack. Runs beside a developer stack: use its own project name,
|
|
# container names, network, and host ports —
|
|
#
|
|
# docker build -t local/pentagi:e2e .
|
|
# PENTAGI_IMAGE=local/pentagi:e2e PENTAGI_LISTEN_PORT=8444 PGVECTOR_LISTEN_PORT=5433 \
|
|
# docker compose -p pentagi-e2e --env-file /dev/null \
|
|
# -f docker-compose.yml -f docker-compose.e2e.yml \
|
|
# up -d --wait --wait-timeout 240 pentagi mock-llm
|
|
#
|
|
# --env-file /dev/null is load-bearing: without it compose auto-loads the
|
|
# developer's .env and the stack inherits live provider keys and DOCKER_HOST.
|
|
# (frontend/e2e/tools/run-local-tier.sh wraps all of this.)
|
|
|
|
# All three base networks get e2e names — the base file gives them fixed
|
|
# `name:`s, so leaving any un-overridden would join this stack to the
|
|
# developer's live observability/langfuse networks.
|
|
networks:
|
|
pentagi-network:
|
|
name: pentagi-e2e-network
|
|
observability-network:
|
|
name: pentagi-e2e-observability-network
|
|
langfuse-network:
|
|
name: pentagi-e2e-langfuse-network
|
|
|
|
services:
|
|
mock-llm:
|
|
image: node:24-alpine
|
|
container_name: pentagi-e2e-mock-llm
|
|
restart: unless-stopped
|
|
command: ["node", "/app/server.mjs"]
|
|
volumes:
|
|
- ./frontend/e2e/mock-llm:/app:ro
|
|
networks:
|
|
- pentagi-network
|
|
# Keeps a crash-looping mock (restart would silently mask it) from ever
|
|
# reading as a started dependency.
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "wget -qO /dev/null http://127.0.0.1:8080/v1/models"]
|
|
interval: 3s
|
|
timeout: 5s
|
|
retries: 20
|
|
|
|
pentagi:
|
|
container_name: pentagi-e2e
|
|
depends_on:
|
|
pgvector:
|
|
condition: service_healthy
|
|
mock-llm:
|
|
condition: service_healthy
|
|
environment:
|
|
- LLM_SERVER_URL=http://mock-llm:8080/v1
|
|
# The langchaingo client refuses to construct without a token even though
|
|
# the mock never checks it.
|
|
- LLM_SERVER_KEY=e2e-dummy-key
|
|
- LLM_SERVER_MODEL=e2e-mock
|
|
- EMBEDDING_PROVIDER=none
|
|
# The base service has no healthcheck, so `up --wait` would return before
|
|
# goose migrations finish and the API serves. The runtime image is alpine —
|
|
# probe with busybox wget, not curl.
|
|
healthcheck:
|
|
test:
|
|
[
|
|
"CMD-SHELL",
|
|
"wget --no-check-certificate -qO /dev/null https://127.0.0.1:8443/api/v1/info",
|
|
]
|
|
interval: 3s
|
|
timeout: 5s
|
|
retries: 60
|
|
start_period: 10s
|
|
|
|
pgvector:
|
|
container_name: pentagi-e2e-pgvector
|