Run the complete IDA platform using Docker Compose.
Prerequisites
| Tool | Version |
|---|---|
| Docker | 24+ |
| Docker Compose | v2+ |
| Available RAM | 8 GB minimum |
| Disk space | 10 GB minimum |
Quick Start
git clone https://github.com/infinia/ida.gitcd idadocker compose up -d
docker-compose.yml
version: '3.8'services:# ====== ADI Blockchain ======adi-node-1:image: infinia/adi-node:latestcontainer_name: adi-node-1ports:- "30303:30303"- "8545:8545"volumes:- adi-data-1:/dataenvironment:- NETWORK=devnet- NODE_ID=1- VALIDATOR=truenetworks:- ida-networkadi-node-2:image: infinia/adi-node:latestcontainer_name: adi-node-2ports:- "30304:30303"- "8546:8545"volumes:- adi-data-2:/dataenvironment:- NETWORK=devnet- NODE_ID=2- VALIDATOR=true- BOOTNODE=adi-node-1:30303depends_on:- adi-node-1networks:- ida-network# ====== Infrastructure ======postgres:image: postgres:16-alpinecontainer_name: ida-postgresports:- "5432:5432"environment:POSTGRES_DB: idaPOSTGRES_USER: idaPOSTGRES_PASSWORD: ida_secretvolumes:- postgres-data:/var/lib/postgresql/datanetworks:- ida-networkredis:image: redis:7-alpinecontainer_name: ida-redisports:- "6379:6379"volumes:- redis-data:/datanetworks:- ida-networknats:image: nats:2.10-alpinecontainer_name: ida-natsports:- "4222:4222"- "8222:8222"networks:- ida-networkipfs:image: ipfs/kubo:latestcontainer_name: ida-ipfsports:- "5001:5001"- "8088:8080"volumes:- ipfs-data:/data/ipfsnetworks:- ida-network# ====== IDA Services ======ida-api:image: infinia/ida-api:latestcontainer_name: ida-apiports:- "8080:8080"environment:DATABASE_URL: postgres://ida:ida_secret@postgres:5432/ida?sslmode=disableREDIS_URL: redis://redis:6379ADI_RPC_URL: http://adi-node-1:8545NATS_URL: nats://nats:4222IPFS_API_URL: http://ipfs:5001LOG_LEVEL: infodepends_on:- postgres- redis- nats- ipfs- adi-node-1networks:- ida-networkhealthcheck:test: ["CMD", "curl", "-f", "http://localhost:8080/health"]interval: 10stimeout: 5sretries: 5ida-resolver:image: infinia/ida-resolver:latestcontainer_name: ida-resolverports:- "8081:8081"environment:ADI_RPC_URL: http://adi-node-1:8545REDIS_URL: redis://redis:6379IPFS_API_URL: http://ipfs:5001depends_on:- redis- adi-node-1- ipfsnetworks:- ida-networkida-portal:image: infinia/ida-portal:latestcontainer_name: ida-portalports:- "3000:80"environment:VITE_API_URL: http://localhost:8080depends_on:- ida-apinetworks:- ida-network# ====== Contract Deployer (runs once) ======contract-deployer:image: infinia/ida-contracts:latestcontainer_name: ida-contract-deployerenvironment:ADI_RPC_URL: http://adi-node-1:8545depends_on:adi-node-1:condition: service_startednetworks:- ida-networkrestart: "no"volumes:adi-data-1:adi-data-2:postgres-data:redis-data:ipfs-data:networks:ida-network:driver: bridge
Service Ports
| Service | Port | Description |
|---|---|---|
| ida-api | 8080 | IDA Platform API |
| ida-resolver | 8081 | DID Universal Resolver |
| ida-portal | 3000 | Web Portal |
| adi-node-1 | 30303, 8545 | ADI blockchain node 1 |
| adi-node-2 | 30304, 8546 | ADI blockchain node 2 |
| postgres | 5432 | PostgreSQL database |
| redis | 6379 | Redis cache |
| nats | 4222 | NATS message queue |
| ipfs | 5001 | IPFS API |
Operations
Start all services
docker compose up -d
View logs
docker compose logs -f ida-apidocker compose logs -f adi-node-1
Stop all services
docker compose down
Stop and remove all data
docker compose down -v
Rebuild after code changes
docker compose build ida-api ida-portaldocker compose up -d ida-api ida-portal
Health Checks
# API healthcurl http://localhost:8080/health# Blockchain sync statuscurl http://localhost:8545 -X POST -H "Content-Type: application/json" \-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'# Redis pingdocker exec ida-redis redis-cli ping# PostgreSQL statusdocker exec ida-postgres pg_isready
Environment Variables
See Configuration for a full list of environment variables.