name: "ziex_bench"

services:
  nextjs:
    build: ./nextjs
    environment:
      - NODE_ENV=production
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000/ssr"]
      interval: 1s
      timeout: 2s
      retries: 15
      start_period: 5s
    cpuset: "0,1"
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 2G
    networks:
      - bench-net

  solidjs:
    build: ./solidjs
    environment:
      - NODE_ENV=production
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000/ssr"]
      interval: 1s
      timeout: 2s
      retries: 15
      start_period: 5s
    cpuset: "0,1"
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 2G
    networks:
      - bench-net

  leptos:
    build: ./leptos
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000/ssr"]
      interval: 1s
      timeout: 2s
      retries: 15
      start_period: 5s
    cpuset: "0,1"
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 2G
    networks:
      - bench-net

  dioxus:
    build: ./dioxus
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000/ssr"]
      interval: 1s
      timeout: 2s
      retries: 15
      start_period: 5s
    cpuset: "0,1"
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 2G
    networks:
      - bench-net

  ziex:
    build:
      context: ../
      dockerfile: bench/ziex/Dockerfile
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000/ssr"]
      interval: 1s
      timeout: 2s
      retries: 15
      start_period: 5s
    cpuset: "0,1"
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 2G
    networks:
      - bench-net

  jetzig:
    build: ./jetzig
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000/ssr"]
      interval: 1s
      timeout: 2s
      retries: 15
      start_period: 5s
    cpuset: "0,1"
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 2G
    networks:
      - bench-net

  bench:
    build:
      context: .
      dockerfile: Dockerfile.bench
    # depends_on removed to allow selective startup
    cpuset: "2,3"
    networks:
      - bench-net

networks:
  bench-net:
    driver: bridge
