# Standalone test compose for smoke tests. # Fully self-contained — not an overlay of docker-compose.yml. # Uses a separate project name (-p davinci-platform-test) so test volumes, # containers, and networks are fully isolated from the persistent dev stack. # # Usage (via Makefile): # make test # Builds, runs smoke, tears down # make test-up # Start test stack only # make test-down # Tear down test stack # # Port mapping: test → 4301/4001/45434, dev → 4300/4000/55434 services: db: image: postgres:16-alpine container_name: davinci-platform-test-db ports: - '45434:5432' environment: POSTGRES_USER: davinci POSTGRES_PASSWORD: davinci POSTGRES_DB: davinci_platform_test volumes: - platform-test-pgdata:/var/lib/postgresql/data healthcheck: test: ['CMD-SHELL', 'pg_isready -U davinci -d davinci_platform_test'] interval: 5s timeout: 5s retries: 5 networks: - davinci-platform-test api: build: context: . dockerfile: Dockerfile target: api-builder container_name: davinci-platform-test-api command: ['node', 'packages/api/dist/main.js'] ports: - '4301:3001' depends_on: db: condition: service_healthy environment: DATABASE_URL: postgresql://davinci:davinci@db:5432/davinci_platform_test?schema=public PORT: 3001 NODE_ENV: test DAVINCI_MODE: mothership healthcheck: test: ['CMD-SHELL', 'wget -qO- http://127.0.0.1:3001/health || exit 1'] interval: 10s timeout: 5s retries: 3 networks: - davinci-platform-test web: build: context: . dockerfile: Dockerfile target: web-builder container_name: davinci-platform-test-web command: ['node', 'packages/web/.next/standalone/packages/web/server.js'] ports: - '4001:3000' depends_on: api: condition: service_healthy environment: NEXT_PUBLIC_API_URL: http://localhost:4301/api HOSTNAME: '0.0.0.0' PORT: '3000' networks: - davinci-platform-test volumes: platform-test-pgdata: networks: davinci-platform-test: name: davinci-platform-test