285 lines
7.1 KiB
YAML
285 lines
7.1 KiB
YAML
# Docker Compose для развертывания сети Phantom Protocol
|
|
# Создает сеть из нескольких узлов для тестирования анонимной маршрутизации
|
|
|
|
version: '3.8'
|
|
|
|
# Определение сетей
|
|
networks:
|
|
phantom-network:
|
|
driver: bridge
|
|
ipam:
|
|
config:
|
|
- subnet: 172.20.0.0/16
|
|
gateway: 172.20.0.1
|
|
|
|
# Определение томов для постоянного хранения данных
|
|
volumes:
|
|
phantom-node1-data:
|
|
driver: local
|
|
phantom-node2-data:
|
|
driver: local
|
|
phantom-node3-data:
|
|
driver: local
|
|
phantom-node4-data:
|
|
driver: local
|
|
phantom-node5-data:
|
|
driver: local
|
|
|
|
# Определение сервисов
|
|
services:
|
|
|
|
# Bootstrap узел - первый узел в сети
|
|
phantom-bootstrap:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: phantom-bootstrap
|
|
hostname: phantom-bootstrap
|
|
networks:
|
|
phantom-network:
|
|
ipv4_address: 172.20.0.10
|
|
ports:
|
|
- "8080:8080" # Основной порт
|
|
- "8081:8081" # Kademlia DHT
|
|
volumes:
|
|
- phantom-node1-data:/home/phantom/data
|
|
- ./logs:/home/phantom/logs
|
|
environment:
|
|
- PHANTOM_NODE_NAME=bootstrap
|
|
- PHANTOM_PORT=8080
|
|
- PHANTOM_KAD_PORT=8081
|
|
- PHANTOM_LOG_LEVEL=INFO
|
|
- PHANTOM_NXNODES=3
|
|
- PHANTOM_NYNODES=3
|
|
- PHANTOM_NKEYS=3
|
|
- PHANTOM_MAX_CONNECTIONS=50
|
|
- PHANTOM_SETUP_IPTABLES=false
|
|
devices:
|
|
- /dev/net/tun:/dev/net/tun
|
|
cap_add:
|
|
- NET_ADMIN
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["/usr/local/bin/healthcheck.sh"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 60s
|
|
|
|
# Узел 2 - подключается к bootstrap
|
|
phantom-node2:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: phantom-node2
|
|
hostname: phantom-node2
|
|
networks:
|
|
phantom-network:
|
|
ipv4_address: 172.20.0.11
|
|
ports:
|
|
- "8082:8080"
|
|
- "8083:8081"
|
|
volumes:
|
|
- phantom-node2-data:/home/phantom/data
|
|
- ./logs:/home/phantom/logs
|
|
environment:
|
|
- PHANTOM_NODE_NAME=node2
|
|
- PHANTOM_PORT=8080
|
|
- PHANTOM_KAD_PORT=8081
|
|
- PHANTOM_LOG_LEVEL=INFO
|
|
- PHANTOM_BOOTSTRAP_NODES=172.20.0.10:8081
|
|
- PHANTOM_WAIT_FOR_PEERS=phantom-bootstrap
|
|
- PHANTOM_NXNODES=3
|
|
- PHANTOM_NYNODES=3
|
|
- PHANTOM_NKEYS=3
|
|
devices:
|
|
- /dev/net/tun:/dev/net/tun
|
|
cap_add:
|
|
- NET_ADMIN
|
|
depends_on:
|
|
- phantom-bootstrap
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["/usr/local/bin/healthcheck.sh"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 90s
|
|
|
|
# Узел 3
|
|
phantom-node3:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: phantom-node3
|
|
hostname: phantom-node3
|
|
networks:
|
|
phantom-network:
|
|
ipv4_address: 172.20.0.12
|
|
ports:
|
|
- "8084:8080"
|
|
- "8085:8081"
|
|
volumes:
|
|
- phantom-node3-data:/home/phantom/data
|
|
- ./logs:/home/phantom/logs
|
|
environment:
|
|
- PHANTOM_NODE_NAME=node3
|
|
- PHANTOM_PORT=8080
|
|
- PHANTOM_KAD_PORT=8081
|
|
- PHANTOM_LOG_LEVEL=INFO
|
|
- PHANTOM_BOOTSTRAP_NODES=172.20.0.10:8081,172.20.0.11:8081
|
|
- PHANTOM_WAIT_FOR_PEERS=phantom-bootstrap,phantom-node2
|
|
- PHANTOM_NXNODES=3
|
|
- PHANTOM_NYNODES=3
|
|
- PHANTOM_NKEYS=3
|
|
devices:
|
|
- /dev/net/tun:/dev/net/tun
|
|
cap_add:
|
|
- NET_ADMIN
|
|
depends_on:
|
|
- phantom-bootstrap
|
|
- phantom-node2
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["/usr/local/bin/healthcheck.sh"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 120s
|
|
|
|
# Узел 4
|
|
phantom-node4:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: phantom-node4
|
|
hostname: phantom-node4
|
|
networks:
|
|
phantom-network:
|
|
ipv4_address: 172.20.0.13
|
|
ports:
|
|
- "8086:8080"
|
|
- "8087:8081"
|
|
volumes:
|
|
- phantom-node4-data:/home/phantom/data
|
|
- ./logs:/home/phantom/logs
|
|
environment:
|
|
- PHANTOM_NODE_NAME=node4
|
|
- PHANTOM_PORT=8080
|
|
- PHANTOM_KAD_PORT=8081
|
|
- PHANTOM_LOG_LEVEL=INFO
|
|
- PHANTOM_BOOTSTRAP_NODES=172.20.0.10:8081,172.20.0.11:8081,172.20.0.12:8081
|
|
- PHANTOM_WAIT_FOR_PEERS=phantom-bootstrap,phantom-node2,phantom-node3
|
|
- PHANTOM_NXNODES=3
|
|
- PHANTOM_NYNODES=3
|
|
- PHANTOM_NKEYS=3
|
|
devices:
|
|
- /dev/net/tun:/dev/net/tun
|
|
cap_add:
|
|
- NET_ADMIN
|
|
depends_on:
|
|
- phantom-bootstrap
|
|
- phantom-node2
|
|
- phantom-node3
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["/usr/local/bin/healthcheck.sh"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 150s
|
|
|
|
# Узел 5
|
|
phantom-node5:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: phantom-node5
|
|
hostname: phantom-node5
|
|
networks:
|
|
phantom-network:
|
|
ipv4_address: 172.20.0.14
|
|
ports:
|
|
- "8088:8080"
|
|
- "8089:8081"
|
|
volumes:
|
|
- phantom-node5-data:/home/phantom/data
|
|
- ./logs:/home/phantom/logs
|
|
environment:
|
|
- PHANTOM_NODE_NAME=node5
|
|
- PHANTOM_PORT=8080
|
|
- PHANTOM_KAD_PORT=8081
|
|
- PHANTOM_LOG_LEVEL=INFO
|
|
- PHANTOM_BOOTSTRAP_NODES=172.20.0.10:8081,172.20.0.11:8081,172.20.0.12:8081,172.20.0.13:8081
|
|
- PHANTOM_WAIT_FOR_PEERS=phantom-bootstrap,phantom-node2,phantom-node3,phantom-node4
|
|
- PHANTOM_NXNODES=3
|
|
- PHANTOM_NYNODES=3
|
|
- PHANTOM_NKEYS=3
|
|
devices:
|
|
- /dev/net/tun:/dev/net/tun
|
|
cap_add:
|
|
- NET_ADMIN
|
|
depends_on:
|
|
- phantom-bootstrap
|
|
- phantom-node2
|
|
- phantom-node3
|
|
- phantom-node4
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["/usr/local/bin/healthcheck.sh"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 180s
|
|
|
|
# Мониторинг и управление
|
|
phantom-monitor:
|
|
image: nginx:alpine
|
|
container_name: phantom-monitor
|
|
hostname: phantom-monitor
|
|
networks:
|
|
phantom-network:
|
|
ipv4_address: 172.20.0.100
|
|
ports:
|
|
- "8090:80"
|
|
volumes:
|
|
- ./docker/monitor:/usr/share/nginx/html:ro
|
|
- ./logs:/var/log/phantom:ro
|
|
environment:
|
|
- NGINX_HOST=phantom-monitor
|
|
- NGINX_PORT=80
|
|
depends_on:
|
|
- phantom-bootstrap
|
|
- phantom-node2
|
|
- phantom-node3
|
|
- phantom-node4
|
|
- phantom-node5
|
|
restart: unless-stopped
|
|
|
|
# Утилита для тестирования сети
|
|
phantom-tester:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: phantom-tester
|
|
hostname: phantom-tester
|
|
networks:
|
|
phantom-network:
|
|
ipv4_address: 172.20.0.200
|
|
volumes:
|
|
- ./docker/test-scripts:/home/phantom/test-scripts:ro
|
|
- ./logs:/home/phantom/logs
|
|
environment:
|
|
- PHANTOM_NODE_NAME=tester
|
|
- PHANTOM_TEST_MODE=true
|
|
- PHANTOM_BOOTSTRAP_NODES=172.20.0.10:8081
|
|
command: ["bash", "-c", "sleep infinity"]
|
|
depends_on:
|
|
- phantom-bootstrap
|
|
- phantom-node2
|
|
- phantom-node3
|
|
- phantom-node4
|
|
- phantom-node5
|
|
restart: unless-stopped
|
|
|