# deploy/testnet/docker-compose.buyer.yml — Buyer (Express + Vite UI) — TESTNET # # Independent compose project. Joins three external networks: # # marketplace-net reaches the indexer at http://marketplace-indexer:8090 # apex-dashboard_apex-net reaches ws://ogmios:1337 in the apex-dashboard # testnet stack (required when LIVE_CHAIN=1 so the # /v1/accept endpoint can submit Accept txs) # dashboard_default Traefik public entrypoint (mp-buyer.*) # # All three networks must exist before bringing this up. # # Bring up: # docker compose -f deploy/testnet/docker-compose.buyer.yml up -d --build name: marketplace-buyer services: buyer: build: context: ../.. dockerfile: buyer/Dockerfile container_name: marketplace-buyer restart: unless-stopped env_file: - path: ../../buyer/.env required: false environment: # Compose-level override — buyer talks to indexer via service name. INDEXER_URL: http://marketplace-indexer:8090 BUYER_PORT: "8070" # LiveOgmiosProvider uses HTTP JSON-RPC against the apex-dashboard # testnet stack's Ogmios. /v1/accept depends on this; without it the # endpoint returns 503 service_unavailable. OGMIOS_URL: http://ogmios:1337 LIVE_CHAIN: "1" NETWORK_ID: "0" healthcheck: test: ["CMD-SHELL", "wget -qO- http://localhost:8070/healthz >/dev/null || exit 1"] interval: 20s timeout: 5s retries: 3 start_period: 15s networks: - marketplace-net - apex-net - traefik-net labels: - "traefik.enable=true" - "traefik.docker.network=dashboard_default" - "traefik.http.routers.mp-buyers.entrypoints=web" - "traefik.http.routers.mp-buyers.rule=Host(`mp-buyers.vector.testnet.apexfusion.org`)" - "traefik.http.services.mp-buyers.loadbalancer.server.port=8070" logging: driver: json-file options: max-size: "10m" max-file: "3" networks: marketplace-net: external: true name: marketplace-net apex-net: external: true name: apex-dashboard_apex-net traefik-net: external: true name: dashboard_default