# deploy/mainnet/docker-compose.supplier.yml — Supplier — MAINNET (ollama backend) # # Mirrors deploy/testnet/docker-compose.supplier.yml — the canonical # ollama-backed supplier. Mainnet differences: # - container_name + project name use the marketplace-mainnet- prefix # - No apex-net join: this host has no local apex-dashboard-mainnet # stack; the supplier reaches chain via the public HTTPS endpoint # supplied by supplier/.env (OGMIOS_URL=https://ogmios.vector.mainnet.apexfusion.org). # - Traefik router name + Host rule drop the `testnet.` infix. # # For the ChatGPT/Codex-backed supplier variant see docker-compose.supplier-gpt.yml. # # Pre-flight networks (must already exist): # docker network create marketplace-mainnet-net # one-shot # # traefik-net is created by the Traefik project # # Pre-flight services: # docker compose -f docker-compose.ollama.yml up -d # docker exec marketplace-mainnet-ollama ollama pull qwen2.5:0.5b # # Bring up: # docker compose -f deploy/mainnet/docker-compose.supplier.yml up -d name: marketplace-mainnet-supplier services: supplier: build: context: ../.. dockerfile: supplier/Dockerfile container_name: marketplace-mainnet-supplier restart: unless-stopped env_file: - path: ../../supplier/.env required: false environment: LLM_BACKEND: ollama OLLAMA_URL: http://marketplace-mainnet-ollama:11434 PORT: "8080" # Enable LiveOgmiosProvider so submitTx/awaitTx actually broadcast. # Mirrors the testnet supplier compose; without this the supplier # silently falls back to ReadOnlyOgmiosProvider and Claim/Submit # never reach chain. LIVE_CHAIN: "1" # NETWORK_ID and OGMIOS_URL intentionally not pinned here — they MUST # come from the operator-provided supplier/.env on a mainnet host. # Setting them via compose would be a footgun: a stray re-up on # testnet hardware could silently re-tag the supplier as mainnet. healthcheck: test: ["CMD-SHELL", "wget -qO- http://localhost:8080/healthz >/dev/null || exit 1"] interval: 20s timeout: 5s retries: 3 start_period: 15s networks: - marketplace-mainnet-net - traefik-net labels: - "traefik.enable=true" - "traefik.docker.network=traefik-net" - "traefik.http.routers.mp-suppliers-mainnet.entrypoints=web" - "traefik.http.routers.mp-suppliers-mainnet.rule=Host(`mp-suppliers.vector.apexfusion.org`)" - "traefik.http.routers.mp-suppliers-mainnet.middlewares=mp-suppliers-mainnet-https" - "traefik.http.middlewares.mp-suppliers-mainnet-https.redirectscheme.scheme=https" - "traefik.http.middlewares.mp-suppliers-mainnet-https.redirectscheme.permanent=true" - "traefik.http.routers.mp-suppliers-mainnet-tls.entrypoints=websecure" - "traefik.http.routers.mp-suppliers-mainnet-tls.rule=Host(`mp-suppliers.vector.apexfusion.org`)" - "traefik.http.routers.mp-suppliers-mainnet-tls.tls.certresolver=letsencrypt" - "traefik.http.services.mp-suppliers-mainnet.loadbalancer.server.port=8080" logging: driver: json-file options: max-size: "10m" max-file: "3" networks: marketplace-mainnet-net: external: true name: marketplace-mainnet-net traefik-net: external: true name: traefik-net