1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
version: '3.8'
services:
# Xorion Development Environment
xorion-dev:
build:
context: .
dockerfile: Dockerfile.dev
image: xorion-dev:latest
container_name: xorion-dev
volumes:
# Mount source code for hot reloading
- .:/app
# Cargo registry cache
- cargo-registry:/root/.cargo/registry
# Cargo build cache
- cargo-target:/app/target
# IPFS data directory
- ipfs-data:/data/ipfs
environment:
- RUST_LOG=debug
- NETWORK=devnet
- ETH_RPC_URL=http://host.docker.internal:8545
- SOL_RPC_URL=http://host.docker.internal:8899
- IPFS_GATEWAY=http://ipfs:8080
- IPFS_API_URL=http://ipfs:5001/api/v0
- DATABASE_URL=/data/xorion.db
- ZK_CIRCUITS_PATH=/app/circuits
- ZK_PROVING_KEYS_PATH=/app/zkeys
ports:
# GUI debugging port (if needed)
- "3000:3000"
# API server port
- "8080:8080"
# Debug port for Rust debugger
- "2345:2345"
depends_on:
- ipfs
networks:
- xorion-network
command: tail -f /dev/null
# For development, keep container running
# Use `make run-gui` or `make run-demo` inside container
# IPFS Node for decentralized storage
ipfs:
image: ipfs/kubo:latest
container_name: xorion-ipfs
ports:
# IPFS HTTP API
- "5001:5001"
# IPFS Gateway
- "8081:8080"
# Swarm port (for peer connections)
- "4001:4001"
volumes:
- ipfs-data:/data/ipfs
environment:
- IPFS_PROFILE=server
- LIBP2P_FORCE_PUBKEY_BUILD=0
networks:
- xorion-network
restart: unless-stopped
healthcheck:
test:
interval: 30s
timeout: 10s
retries: 3
# Local Ethereum node (Anvil/Hardhat)
ethereum-node:
image: ghcr.io/foundry-rs/foundry:latest
container_name: xorion-ethereum
ports:
- "8545:8545"
environment:
- ANVIL_IP_ADDR=0.0.0.0
networks:
- xorion-network
command: anvil --host 0.0.0.0 --chain-id 31337 --balance 10000 --accounts 10
profiles:
- ethereum
# Only start when needed with: docker-compose --profile ethereum up
# Local Solana validator
solana-validator:
image: solanalabs/solana:latest
container_name: xorion-solana
ports:
- "8899:8899"
- "8900:8900"
environment:
- RUST_LOG=solana_runtime::system_instruction_processor=trace
networks:
- xorion-network
command: solana-test-validator --rpc-port 8899 --reset
profiles:
- solana
# Only start when needed with: docker-compose --profile solana up
# PostgreSQL for analytics (optional)
postgres:
image: postgres:16-alpine
container_name: xorion-postgres
ports:
- "5432:5432"
environment:
- POSTGRES_USER=xorion
- POSTGRES_PASSWORD=xorion_dev_password
- POSTGRES_DB=xorion_analytics
volumes:
- postgres-data:/var/lib/postgresql/data
networks:
- xorion-network
profiles:
- analytics
# Only start when needed for analytics features
volumes:
cargo-registry:
name: xorion-cargo-registry
cargo-target:
name: xorion-cargo-target
ipfs-data:
name: xorion-ipfs-data
postgres-data:
name: xorion-postgres-data
networks:
xorion-network:
driver: bridge
name: xorion-network
# Default services to start
# Run: docker-compose up -d
# This starts: xorion-dev, ipfs
#
# Additional services:
# - docker-compose --profile ethereum up -d
# - docker-compose --profile solana up -d
# - docker-compose --profile analytics up -d