Files
smom-dbis-138/docker-compose.omnl-production.yml
zaragoza444 54ca9bea3b
Some checks failed
CI/CD Pipeline / Solidity Contracts (push) Failing after 52s
CI/CD Pipeline / Security Scanning (push) Successful in 2m40s
CI/CD Pipeline / Lint and Format (push) Failing after 49s
CI/CD Pipeline / Terraform Validation (push) Failing after 24s
CI/CD Pipeline / Kubernetes Validation (push) Successful in 27s
Deploy ChainID 138 / Deploy ChainID 138 (push) Has been cancelled
Validation / validate-genesis (push) Has been cancelled
Validation / validate-terraform (push) Has been cancelled
Validation / validate-kubernetes (push) Has been cancelled
Verify Deployment / Verify Deployment (push) Has been cancelled
Validation / validate-smart-contracts (push) Failing after 14s
Validation / validate-security (push) Failing after 1m20s
Validation / validate-documentation (push) Failing after 18s
feat(settlement): wire real Chain 138 contracts for 1,000 BTC ledger
Add canonical btc-l1-ledger config, /btc/contracts API, Python chain138-oracle
service, and production deploy scripts so secure.omdnl.org can serve live cBTC,
DODO, and PMM pool addresses with headroom-aware mint gating.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-21 02:26:20 -07:00

179 lines
5.2 KiB
YAML

# OMNL Bank — full production stack (128-chain support)
# Usage: docker compose -f docker-compose.omnl-production.yml up -d
services:
chain138-oracle:
build:
context: .
dockerfile: services/chain138-oracle/Dockerfile
ports:
- "3500:3500"
env_file:
- ./config/deployment-omnl.production.env
environment:
- CHAIN138_ORACLE_PORT=3500
- RPC_URL_138=${RPC_URL_138:-http://192.168.11.221:8545}
volumes:
- ./config:/app/config:ro
restart: unless-stopped
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:3500/health')"]
interval: 30s
timeout: 5s
retries: 3
token-aggregation:
build:
context: ./services/token-aggregation
dockerfile: Dockerfile
ports:
- "3000:3000"
env_file:
- ./config/deployment-omnl.production.env
environment:
- NODE_ENV=production
- PORT=3000
- OMNL_SUPPORTED_CHAINS_CONFIG=/app/config/omnl-supported-chains.v1.json
volumes:
- ./config:/app/config:ro
restart: unless-stopped
healthcheck:
test: ["CMD", "node", "-e", "require('http').get('http://localhost:3000/health',r=>process.exit(r.statusCode===200?0:1))"]
interval: 30s
timeout: 5s
retries: 3
settlement-middleware:
build:
context: ./services/settlement-middleware
dockerfile: Dockerfile
ports:
- "3011:3011"
env_file:
- ./config/deployment-omnl.production.env
environment:
- NODE_ENV=production
- SETTLEMENT_MIDDLEWARE_PORT=3011
- SETTLEMENT_MIDDLEWARE_CONFIG=/app/config/settlement-middleware.production.v1.json
- OMNL_BTC_LEDGER_CONFIG=/app/config/btc-l1-ledger-1000.chain138.v1.json
- OMNL_SUPPORTED_CHAINS_CONFIG=/app/config/omnl-supported-chains.v1.json
- TOKEN_AGGREGATION_URL=http://token-aggregation:3000
- CHAIN138_ORACLE_URL=http://chain138-oracle:3500
volumes:
- ./config:/app/config:ro
- settlement-data:/app/data
depends_on:
token-aggregation:
condition: service_healthy
chain138-oracle:
condition: service_healthy
restart: unless-stopped
dbis-exchange:
build:
context: ./services/dbis-exchange
dockerfile: Dockerfile
ports:
- "3012:3012"
env_file:
- ./config/deployment-omnl.production.env
environment:
- NODE_ENV=production
- DBIS_EXCHANGE_PORT=3012
- DBIS_EXCHANGE_CONFIG=/app/config/dbis-exchange.production.v1.json
- OMNL_SUPPORTED_CHAINS_CONFIG=/app/config/omnl-supported-chains.v1.json
- OMNL_M2_TOKEN_REGISTRY=/app/config/omnl-m2-token-registry.v1.json
- TOKEN_AGGREGATION_URL=http://token-aggregation:3000
- SETTLEMENT_MIDDLEWARE_URL=http://settlement-middleware:3011
volumes:
- ./config:/app/config:ro
depends_on:
settlement-middleware:
condition: service_started
restart: unless-stopped
frontend:
build:
context: ./frontend-dapp
dockerfile: Dockerfile.production
ports:
- "3002:80"
depends_on:
- dbis-exchange
- settlement-middleware
- token-aggregation
restart: unless-stopped
nginx:
image: nginx:alpine
ports:
- "443:443"
- "80:80"
volumes:
- ./deploy/nginx/omnl-bank.conf:/etc/nginx/conf.d/default.conf:ro
- ./deploy/nginx/certs:/etc/nginx/certs:ro
depends_on:
- frontend
- token-aggregation
- settlement-middleware
- dbis-exchange
- btc-intake
restart: unless-stopped
# Optional: use external BITCOIND_RPC_URL instead of this service
bitcoind:
image: bitcoin/bitcoin:27.0
profiles: ["btc-node"]
volumes:
- btc-data:/home/bitcoin/.bitcoin
environment:
BITCOIN_DATA: /home/bitcoin/.bitcoin
command:
- bitcoind
- -server=1
- -txindex=1
- -rpcallowip=0.0.0.0/0
- -rpcbind=0.0.0.0
- -rpcuser=${BITCOIND_RPC_USER:-omnl}
- -rpcpassword=${BITCOIND_RPC_PASS:-changeme}
- -printtoconsole
expose:
- "8332"
restart: unless-stopped
btc-intake:
build:
context: ./services/btc-intake
dockerfile: Dockerfile
ports:
- "3013:3013"
env_file:
- ./config/deployment-omnl.production.env
environment:
- NODE_ENV=production
- BTC_INTAKE_PORT=3013
- BTC_INTAKE_DATA_DIR=/app/data
- SETTLEMENT_MIDDLEWARE_URL=http://settlement-middleware:3011
- BITCOIND_RPC_URL=${BITCOIND_RPC_URL:-http://bitcoind:8332}
- BITCOIND_RPC_USER=${BITCOIND_RPC_USER:-omnl}
- BITCOIND_RPC_PASS=${BITCOIND_RPC_PASS:-changeme}
- BTC_NETWORK=${BTC_NETWORK:-mainnet}
- BTC_CONFIRMATIONS_REQUIRED=${BTC_CONFIRMATIONS_REQUIRED:-6}
- OMNL_REQUIRE_LIVE_BTC_PRICE=1
volumes:
- btc-intake-data:/app/data
depends_on:
settlement-middleware:
condition: service_started
restart: unless-stopped
healthcheck:
test: ["CMD", "node", "-e", "require('http').get('http://localhost:3013/health',r=>process.exit(r.statusCode===200||r.statusCode===503?0:1))"]
interval: 30s
timeout: 5s
retries: 3
volumes:
settlement-data:
btc-data:
btc-intake-data: