# Three independent validators, separate volumes, no miner auto-starts. x-market-environment: &market-environment WIKIDECK_NETWORK: testnet WIKIDECK_PAYMENT_MODE: mock WIKIDECK_MARKET_FEE_BPS: "${WIKIDECK_MARKET_FEE_BPS:-250}" WIKIDECK_MARKET_CONFIRMATIONS: "${WIKIDECK_MARKET_CONFIRMATIONS:-10}" services: node-a: image: wikideck:testnet build: { context: ., target: runtime } ports: ["127.0.0.1:3101:3001"] environment: <<: *market-environment PUBLIC_ORIGIN: http://127.0.0.1:3101 WIKIDECK_PEERS: http://node-b:3001,http://node-c:3001 WIKIDECK_ALLOW_PRIVATE_PEERS: "1" volumes: ["testnet-a:/app/data"] init: true read_only: true tmpfs: ["/tmp:size=32m,mode=1777,noexec,nosuid"] cap_drop: [ALL] security_opt: ["no-new-privileges:true"] pids_limit: 128 mem_limit: 1g cpus: 1.0 stop_grace_period: 30s node-b: image: wikideck:testnet build: { context: ., target: runtime } ports: ["127.0.0.1:3102:3001"] environment: <<: *market-environment PUBLIC_ORIGIN: http://127.0.0.1:3102 WIKIDECK_PEERS: http://node-a:3001,http://node-c:3001 WIKIDECK_ALLOW_PRIVATE_PEERS: "1" volumes: ["testnet-b:/app/data"] init: true read_only: true tmpfs: ["/tmp:size=32m,mode=1777,noexec,nosuid"] cap_drop: [ALL] security_opt: ["no-new-privileges:true"] pids_limit: 128 mem_limit: 1g cpus: 1.0 stop_grace_period: 30s node-c: image: wikideck:testnet build: { context: ., target: runtime } ports: ["127.0.0.1:3103:3001"] environment: <<: *market-environment PUBLIC_ORIGIN: http://127.0.0.1:3103 WIKIDECK_PEERS: http://node-a:3001,http://node-b:3001 WIKIDECK_ALLOW_PRIVATE_PEERS: "1" volumes: ["testnet-c:/app/data"] init: true read_only: true tmpfs: ["/tmp:size=32m,mode=1777,noexec,nosuid"] cap_drop: [ALL] security_opt: ["no-new-privileges:true"] pids_limit: 128 mem_limit: 1g cpus: 1.0 stop_grace_period: 30s volumes: testnet-a: testnet-b: testnet-c: