4NK_node/docker-compose.yml

386 lines
10 KiB
YAML

version: '3.8'
# Updated to use newer Go-based images for builds; placeholder for future dynamic tag adjustments
services:
tor:
image: torproject/tor:latest
container_name: 4nk-tor
hostname: tor.4nk.local
ports:
- "9050:9050"
- "9051:9051"
volumes:
- ./modules/tor/conf/tor.conf:/etc/tor/torrc:ro
- ./modules/tor/data:/var/lib/tor
- ./modules/tor/log:/var/log/tor
networks:
4nk_network:
ipv4_address: 172.20.0.10
restart: unless-stopped
bitcoin:
image: ruimarinho/bitcoin-core:latest
container_name: 4nk-bitcoin
hostname: bitcoin.4nk.local
ports:
- "38333:38333"
- "38332:38332"
- "29000:29000"
volumes:
- ./modules/bitcoin/data:/home/bitcoin/.bitcoin
- ./modules/bitcoin/conf/bitcoin.conf:/home/bitcoin/.bitcoin/bitcoin.conf:ro
- ./modules/bitcoin/logs:/home/bitcoin/.bitcoin/logs
networks:
4nk_network:
ipv4_address: 172.20.0.11
restart: unless-stopped
depends_on:
- tor
blindbit:
image: 4nk-node-blindbit:latest
container_name: 4nk-blindbit
hostname: blindbit.4nk.local
ports:
- "8000:8000"
environment:
- HOST=0.0.0.0:8000
- CHAIN=signet
- SYNC_START_HEIGHT=1
- MAX_PARALLEL_TWEAK_COMPUTATIONS=4
- MAX_PARALLEL_REQUESTS=4
- TWEAKS_ONLY=0
- TWEAKS_FULL_BASIC=1
- TWEAKS_FULL_WITH_DUST_FILTER=1
- TWEAKS_CUT_THROUGH_WITH_DUST_FILTER=1
command: ["/main", "--datadir", "/blindbit"]
working_dir: /
volumes:
- ./modules/blindbit/conf/blindbit.toml:/blindbit/blindbit.toml:ro
- ./modules/blindbit/data:/blindbit
- ./modules/blindbit/logs:/blindbit/logs
networks:
4nk_network:
ipv4_address: 172.20.0.12
restart: unless-stopped
depends_on:
- bitcoin
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost:8000"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
sdk_storage:
image: 4nk-node-sdk_storage:dev
container_name: 4nk-sdk-storage
hostname: sdk-storage.4nk.local
ports:
- "8081:8081"
volumes:
- ./modules/sdk_storage/conf/sdk_storage.conf:/usr/local/bin/sdk_storage.conf:ro
- ./modules/sdk_storage/log:/app/logs
networks:
4nk_network:
ipv4_address: 172.20.0.13
restart: unless-stopped
depends_on:
- blindbit
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost:8081"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
sdk_relay1:
image: 4nk-node-sdk_relay1:dev
container_name: 4nk-sdk-relay1
hostname: sdk-relay1.4nk.local
ports:
- "8090:8090"
- "8091:8091"
environment:
- RELAY_RPC_USER=bitcoin
- RELAY_RPC_PASSWORD=bitcoin
volumes:
- ./modules/sdk_relay1/conf/sdk_relay1.conf:/home/bitcoin/.conf:ro
- ./modules/sdk_relay1/logs:/home/bitcoin/logs
working_dir: /home/bitcoin
networks:
4nk_network:
ipv4_address: 172.20.0.14
restart: unless-stopped
depends_on:
- sdk_storage
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost:8091"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
sdk_relay2:
image: 4nk-node-sdk_relay2:dev
container_name: 4nk-sdk-relay2
hostname: sdk-relay2.4nk.local
ports:
- "8092:8090"
- "8093:8091"
environment:
- RELAY_RPC_USER=bitcoin
- RELAY_RPC_PASSWORD=bitcoin
volumes:
- ./modules/sdk_relay2/conf/sdk_relay2.conf:/home/bitcoin/.conf:ro
- ./modules/sdk_relay2/logs:/home/bitcoin/logs
working_dir: /home/bitcoin
networks:
4nk_network:
ipv4_address: 172.20.0.15
restart: unless-stopped
depends_on:
- sdk_storage
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost:8091"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
sdk_relay3:
image: 4nk-node-sdk_relay3:dev
container_name: 4nk-sdk-relay3
hostname: sdk-relay3.4nk.local
ports:
- "8094:8090"
- "8095:8091"
environment:
- RELAY_RPC_USER=bitcoin
- RELAY_RPC_PASSWORD=bitcoin
volumes:
- ./modules/sdk_relay3/conf/sdk_relay3.conf:/home/bitcoin/.conf:ro
- ./modules/sdk_relay3/logs:/home/bitcoin/logs
working_dir: /home/bitcoin
networks:
4nk_network:
ipv4_address: 172.20.0.16
restart: unless-stopped
depends_on:
- sdk_storage
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost:8091"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
sdk_signer:
image: 4nk-node-sdk_signer:dev
container_name: 4nk-sdk-signer
hostname: sdk-signer.4nk.local
ports:
- "9090:9090"
volumes:
- ./modules/sdk_signer/conf/sdk_signer.conf:/usr/local/bin/sdk_signer.conf:ro
- ./modules/sdk_signer/data:/app/data
- ./modules/sdk_signer/logs:/usr/src/app/logs
networks:
4nk_network:
ipv4_address: 172.20.0.17
restart: unless-stopped
depends_on:
- sdk_relay1
- sdk_relay2
- sdk_relay3
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost:9090"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
ihm_client:
image: 4nk-node-ihm_client:dev
container_name: 4nk-ihm-client
hostname: ihm-client.4nk.local
ports:
- "8080:80"
- "3003:3003"
volumes:
- ./modules/ihm_client/logs:/var/log/ihm_client
networks:
4nk_network:
ipv4_address: 172.20.0.18
restart: unless-stopped
depends_on:
- sdk_signer
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "--spider", "http://localhost"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
miniback-postgres:
image: postgres:15
container_name: miniback-postgres
hostname: miniback-postgres.4nk.local
environment:
- POSTGRES_USER=miniback
- POSTGRES_PASSWORD=minibackpassword
- POSTGRES_DB=miniback
volumes:
- miniback_pg_data:/var/lib/postgresql/data
networks:
4nk_network:
ipv4_address: 172.20.0.30
restart: unless-stopped
ports:
- "5432:5432"
miniback:
image: 4nk-node-miniback:dev
container_name: miniback
hostname: miniback.4nk.local
env_file:
- ./projects/lecoffre/lecoffre-back-mini/conf/lecoffre-back-mini_env.conf
depends_on:
- miniback-postgres
networks:
4nk_network:
ipv4_address: 172.20.0.31
restart: unless-stopped
volumes:
- ./projects/lecoffre/lecoffre-back-mini/logs:/logs
- ./projects/lecoffre/lecoffre-back-mini/conf/lecoffre-back-mini_env.conf:/app/.env:ro
coffre_front:
image: lecoffre-front:dev
container_name: coffre-front
hostname: coffre-front.4nk.local
volumes:
- ./projects/lecoffre/lecoffre-front/logs:/logs
networks:
4nk_network:
ipv4_address: 172.20.0.32
restart: unless-stopped
coffre_back_mini:
image: lecoffre-back-mini:dev
container_name: coffre-back-mini
hostname: coffre-back-mini.4nk.local
networks:
4nk_network:
ipv4_address: 172.20.0.33
restart: unless-stopped
nginx:
image: nginx:1.25
container_name: 4nk-nginx
hostname: nginx.4nk.local
ports:
- "80:80"
volumes:
- ./conf/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./conf/nginx/sites-enabled:/etc/nginx/sites-enabled:ro
- ./log/nginx:/var/log/nginx
networks:
4nk_network:
ipv4_address: 172.20.0.40
restart: unless-stopped
# Profil monitoring: Loki + Promtail + Grafana
loki:
image: grafana/loki:2.9.0
container_name: 4nk-loki
ports:
- "3100:3100"
command: -config.file=/etc/loki/local-config.yaml
volumes:
- ./log/loki-config.yaml:/etc/loki/local-config.yaml:ro
- loki_data:/loki
networks:
4nk_network:
ipv4_address: 172.20.0.41
restart: unless-stopped
promtail:
image: grafana/promtail:2.9.0
container_name: 4nk-promtail
command: -config.file=/etc/promtail/config.yml
volumes:
- ./log/promtail-config.yml:/etc/promtail/config.yml:ro
- /var/lib/docker/containers:/var/lib/docker/containers:ro
- /var/log/docker:/var/log/docker:ro
- ./modules:/workspace/modules:ro
- ./projects:/workspace/projects:ro
- ./log:/workspace/logs:ro
networks:
4nk_network:
ipv4_address: 172.20.0.42
restart: unless-stopped
depends_on:
- loki
grafana:
image: grafana/grafana:10.0.0
container_name: 4nk-grafana
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_USERS_ALLOW_SIGN_UP=false
- GF_SERVER_ROOT_URL=%(protocol)s://%(domain)s/grafana
- GF_SERVER_SERVE_FROM_SUB_PATH=true
volumes:
- grafana_data:/var/lib/grafana
- ./log/grafana-datasources.yml:/etc/grafana/provisioning/datasources/datasources.yml:ro
- ./log/grafana-dashboards.yml:/etc/grafana/provisioning/dashboards/dashboards.yml:ro
- ./log/dashboards:/etc/grafana/provisioning/dashboards/dashboards:ro
networks:
4nk_network:
ipv4_address: 172.20.0.43
restart: unless-stopped
depends_on:
- loki
# Profil outils de développement et diagnostic
devtools:
image: alpine:3.19
container_name: 4nk-devtools
command: ["sh", "-c", "sleep infinity"]
tty: true
stdin_open: true
volumes:
- ./log:/workspace/logs
- ./modules:/workspace/modules:ro
- ./projects:/workspace/projects:ro
networks:
4nk_network:
ipv4_address: 172.20.0.44
restart: unless-stopped
healthcheck:
test: ["CMD", "sh", "-lc", "apk info >/dev/null 2>&1"]
interval: 30s
timeout: 5s
retries: 3
volumes:
miniback_pg_data:
networks:
4nk_network:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/16
4nk_projects_net:
driver: bridge
ipam:
config:
- subnet: 172.21.0.0/16