# Docker Compose stack for Playwright UI integration tests. # # Uses the locally-built conductor:server image with Postgres as the backing # store (no Elasticsearch required — Postgres full-text search is sufficient # for the UI test workload). # # Build the server image once before running integration tests: # # docker build -t conductor:server -f docker/server/Dockerfile \ # --build-arg PREBUILT=false . # # Then start this stack (from the repo root): # # docker compose -f docker/docker-compose-ui-e2e.yaml up -d # # The Playwright global-setup script does this automatically when tests start. # Container names are distinct from other compose stacks to allow both to # run side-by-side without port or name conflicts. services: conductor-server: image: conductor:server build: context: ../ dockerfile: docker/server/Dockerfile container_name: conductor-server-ui-e2e environment: - CONFIG_PROP=config-postgres.properties - conductor.app.ownerEmailMandatory=false networks: - internal ports: - "8000:8080" healthcheck: test: ["CMD", "curl", "-sf", "http://localhost:8080/health"] interval: 10s timeout: 10s retries: 24 # up to 4 minutes for a cold JVM start links: - conductor-postgres:postgresdb depends_on: conductor-postgres: condition: service_healthy logging: driver: "json-file" options: max-size: "10k" max-file: "3" conductor-postgres: image: postgres:16 container_name: conductor-postgres-ui-e2e environment: - POSTGRES_USER=conductor - POSTGRES_PASSWORD=conductor networks: - internal healthcheck: test: timeout 5 bash -c 'cat < /dev/null > /dev/tcp/localhost/5432' interval: 5s timeout: 5s retries: 12 logging: driver: "json-file" options: max-size: "1k" max-file: "3" networks: internal: