gcx/blockchain/docker-compose.explorer.yml

169 lines
5.1 KiB
YAML

# ============================================================
# Genex Chain Block Explorer — Docker Compose
#
# Blockscout deployment for Genex Chain (chain-id: 8888)
# Start:
# docker compose -f docker-compose.yml -f docker-compose.explorer.yml up -d
# Access: http://localhost:4000
# ============================================================
services:
# ── Blockscout Block Explorer ──
blockscout:
image: blockscout/blockscout:latest
container_name: genex-blockscout
restart: unless-stopped
depends_on:
blockscout-db:
condition: service_healthy
blockscout-redis:
condition: service_healthy
smart-contract-verifier:
condition: service_started
environment:
# Chain Connection (cosmos/evm 兼容 geth JSON-RPC)
ETHEREUM_JSONRPC_VARIANT: geth
ETHEREUM_JSONRPC_HTTP_URL: ${ETHEREUM_JSONRPC_HTTP_URL:-http://genex-node-1:8545}
ETHEREUM_JSONRPC_WS_URL: ${ETHEREUM_JSONRPC_WS_URL:-ws://genex-node-1:8546}
ETHEREUM_JSONRPC_TRACE_URL: ${ETHEREUM_JSONRPC_TRACE_URL:-http://genex-node-1:8545}
# Database
DATABASE_URL: postgresql://blockscout:${BLOCKSCOUT_DB_PASSWORD:-blockscout_secure_2024}@blockscout-db:5432/blockscout
# Chain Identity
CHAIN_ID: "8888"
COIN: GNX
COIN_NAME: Genex
NETWORK: Genex Chain
SUBNETWORK: ${SUBNETWORK:-Mainnet}
LOGO: /images/genex-logo.svg
# Blockscout Core
BLOCK_TRANSFORMER: base
ECTO_USE_SSL: "false"
SECRET_KEY_BASE: ${SECRET_KEY_BASE:-RMgI4C1HSkxsEjdhtGMfwAHfyT6CKWXOgzCboJflfSm4jeAlic52io05KB6mqzc5}
PORT: "4000"
POOL_SIZE: "80"
POOL_SIZE_API: "10"
# Indexer
INDEXER_DISABLE_PENDING_TRANSACTIONS_FETCHER: "false"
INDEXER_DISABLE_INTERNAL_TRANSACTIONS_FETCHER: "false"
FETCH_REWARDS_WAY: trace
FIRST_BLOCK: "0"
INDEXER_MEMORY_LIMIT: "10gb"
# Token & NFT
TOKEN_METADATA_UPDATE_INTERVAL: "1800"
EIP_1559_ELASTICITY_MULTIPLIER: "2"
# Smart Contract Verification
MICROSERVICE_SC_VERIFIER_ENABLED: "true"
MICROSERVICE_SC_VERIFIER_URL: http://smart-contract-verifier:8050
MICROSERVICE_SC_VERIFIER_TYPE: sc_verifier
# API & UI
API_RATE_LIMIT: "50"
API_RATE_LIMIT_BY_KEY: "150"
API_V2_ENABLED: "true"
DISABLE_EXCHANGE_RATES: "true"
SHOW_TXS_CHART: "true"
RE_CAPTCHA_DISABLED: "true"
# Cache (Redis)
CACHE_ENABLED: "true"
ACCOUNT_REDIS_URL: redis://blockscout-redis:6379/0
# Genex External Apps
APPS_MENU: "true"
EXTERNAL_APPS: '[{"title":"Genex Platform","url":"https://app.gogenex.com","description":"Genex coupon finance platform"},{"title":"Admin Dashboard","url":"https://admin.gogenex.com","description":"Genex admin console"}]'
ports:
- "${BLOCKSCOUT_PORT:-4000}:4000"
volumes:
- blockscout-logs:/app/logs
- ./explorer:/app/custom
networks:
- genex-net
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:4000/api/v2/stats"]
interval: 30s
timeout: 10s
retries: 10
start_period: 120s
# ── Blockscout PostgreSQL ──
blockscout-db:
image: postgres:16-alpine
container_name: genex-blockscout-db
restart: unless-stopped
environment:
POSTGRES_DB: blockscout
POSTGRES_USER: blockscout
POSTGRES_PASSWORD: ${BLOCKSCOUT_DB_PASSWORD:-blockscout_secure_2024}
ports:
- "${BLOCKSCOUT_DB_PORT:-5433}:5432"
volumes:
- blockscout-db-data:/var/lib/postgresql/data
networks:
- genex-net
command:
- "postgres"
- "-c"
- "max_connections=200"
- "-c"
- "shared_buffers=2GB"
- "-c"
- "effective_cache_size=6GB"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U blockscout -d blockscout"]
interval: 10s
timeout: 5s
retries: 5
# ── Redis Cache ──
blockscout-redis:
image: redis:7-alpine
container_name: genex-blockscout-redis
restart: unless-stopped
command: redis-server --maxmemory 512mb --maxmemory-policy allkeys-lru
ports:
- "${BLOCKSCOUT_REDIS_PORT:-6380}:6379"
volumes:
- blockscout-redis-data:/data
networks:
- genex-net
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
# ── Smart Contract Verifier ──
smart-contract-verifier:
image: ghcr.io/blockscout/smart-contract-verifier:latest
container_name: genex-sc-verifier
restart: unless-stopped
environment:
SMART_CONTRACT_VERIFIER__SERVER__HTTP__ADDR: 0.0.0.0:8050
SMART_CONTRACT_VERIFIER__SOLIDITY__ENABLED: "true"
SMART_CONTRACT_VERIFIER__SOLIDITY__COMPILERS_DIR: /tmp/solidity-compilers
SMART_CONTRACT_VERIFIER__VYPER__ENABLED: "false"
SMART_CONTRACT_VERIFIER__SOURCIFY__ENABLED: "false"
ports:
- "${SC_VERIFIER_PORT:-8050}:8050"
volumes:
- sc-verifier-compilers:/tmp/solidity-compilers
networks:
- genex-net
volumes:
blockscout-db-data:
blockscout-redis-data:
blockscout-logs:
sc-verifier-compilers:
networks:
genex-net:
external: true
name: blockchain_genex-net