UNPKG

@hashgraph/hedera-local

Version:

Developer tooling for running Local Hedera Network (Consensus + Mirror Nodes).

382 lines (366 loc) 13.1 kB
services: haveged: image: "${HAVEGED_IMAGE_PREFIX}network-node-haveged:${HAVEGED_IMAGE_TAG}" container_name: haveged restart: always mem_swappiness: 0 privileged: true network_mode: none command: ["-d 16"] network-node: image: "${NETWORK_NODE_IMAGE_PREFIX}${NETWORK_NODE_IMAGE_NAME}:${NETWORK_NODE_IMAGE_TAG}" container_name: network-node user: root mem_swappiness: 0 mem_limit: "${NETWORK_NODE_MEM_LIMIT}" memswap_limit: "${NETWORK_NODE_MEM_LIMIT}" environment: JAVA_HEAP_MIN: "${PLATFORM_JAVA_HEAP_MIN}" JAVA_HEAP_MAX: "${PLATFORM_JAVA_HEAP_MAX}" JAVA_OPTS: "${PLATFORM_JAVA_OPTS}" healthcheck: test: [ "CMD", "grep", "-E", "Now current platform status = ACTIVE|Hedera - Hederanode#0 is ACTIVE", "/opt/hgcapp/services-hedera/HapiApp2.0/output/hgcaa.log" ] interval: 30s timeout: 10s retries: 10 start_period: 10s depends_on: haveged: condition: service_started record-streams-uploader: condition: service_started networks: network-node-bridge: ipv4_address: 172.27.0.3 ports: - "50211:50211" - "50212:50212" - "9999:9999" volumes: - "${NETWORK_NODE_LOGS_ROOT_PATH}/accountBalances:/opt/hgcapp/accountBalances" - "${NETWORK_NODE_LOGS_ROOT_PATH}/recordStreams:/opt/hgcapp/recordStreams" - "${APPLICATION_CONFIG_PATH}:/opt/hgcapp/services-hedera/HapiApp2.0/data/config" - "${NETWORK_NODE_LOGS_ROOT_PATH}/logs:/opt/hgcapp/services-hedera/HapiApp2.0/output" - "${APPLICATION_ROOT_PATH}/data/keys:/opt/hgcapp/services-hedera/HapiApp2.0/data/keys" - "${NETWORK_NODE_LOGS_ROOT_PATH}/stats:/opt/hgcapp/services-hedera/HapiApp2.0/data/stats" - "${APPLICATION_ROOT_PATH}/config.txt:/opt/hgcapp/services-hedera/HapiApp2.0/config.txt" - "${APPLICATION_ROOT_PATH}/settings.txt:/opt/hgcapp/services-hedera/HapiApp2.0/settings.txt" - "${APPLICATION_ROOT_PATH}/log4j2.xml:/opt/hgcapp/services-hedera/HapiApp2.0/log4j2.xml" - "${APPLICATION_ROOT_PATH}/hedera.crt:/opt/hgcapp/services-hedera/HapiApp2.0/hedera.crt" - "${APPLICATION_ROOT_PATH}/hedera.key:/opt/hgcapp/services-hedera/HapiApp2.0/hedera.key" minio: image: minio/minio container_name: minio entrypoint: sh command: -c 'mkdir -p /data/hedera-streams && minio server /data --console-address ":9001"' environment: MINIO_ROOT_USER: "${MINIO_ROOT_USER}" MINIO_ROOT_PASSWORD: "${MINIO_ROOT_PASSWORD}" MINIO_ACCESS_KEY: minioadmin MINIO_SECRET_KEY: minioadmin networks: - cloud-storage ports: - "9000:9000" - "9001:9001" volumes: - "minio-data:/data" record-streams-uploader: image: "${UPLOADER_IMAGE_PREFIX}uploader-mirror:${UPLOADER_IMAGE_TAG}" container_name: record-streams-uploader user: root restart: unless-stopped depends_on: minio: condition: service_started networks: - cloud-storage environment: DEBUG: "true" REAPER_ENABLE: "true" REAPER_MIN_KEEP: "1" REAPER_INTERVAL: "5" S3_ENABLE: "true" GCS_ENABLE: "false" SIG_REQUIRE: "true" SIG_PRIORITIZE: "true" SIG_EXTENSION: "rcd_sig" STREAM_EXTENSION: "${STREAM_EXTENSION}" BUCKET_NAME: "hedera-streams" BUCKET_PATH: "recordstreams/record0.0.3" S3_ACCESS_KEY: "minioadmin" S3_SECRET_KEY: "minioadmin" volumes: - "${NETWORK_NODE_LOGS_ROOT_PATH}/recordStreams/record0.0.3:/recordStreams" command: - /usr/bin/env - ${PYTHON_VERSION} - /usr/local/bin/mirror.py - --linux - --watch-directory - /recordStreams - --s3-endpoint - http://minio:9000 - --debug account-balances-uploader: image: "${UPLOADER_IMAGE_PREFIX}uploader-mirror:${UPLOADER_IMAGE_TAG}" container_name: account-balances-uploader user: root restart: unless-stopped depends_on: minio: condition: service_started networks: - cloud-storage environment: DEBUG: "true" REAPER_ENABLE: "true" REAPER_MIN_KEEP: "1" REAPER_INTERVAL: "5" S3_ENABLE: "true" GCS_ENABLE: "false" SIG_REQUIRE: "true" SIG_PRIORITIZE: "true" SIG_EXTENSION: "pb_sig" STREAM_EXTENSION: "pb" BUCKET_NAME: "hedera-streams" BUCKET_PATH: "accountBalances/balance0.0.3" S3_ACCESS_KEY: "minioadmin" S3_SECRET_KEY: "minioadmin" volumes: - "${NETWORK_NODE_LOGS_ROOT_PATH}/accountBalances/balance0.0.3:/accountBalances" command: - /usr/bin/env - ${PYTHON_VERSION} - /usr/local/bin/mirror.py - --linux - --watch-directory - /accountBalances - --s3-endpoint - http://minio:9000 - --debug record-sidecar-uploader: image: "${UPLOADER_IMAGE_PREFIX}uploader-mirror:${UPLOADER_IMAGE_TAG}" container_name: record-sidecar-uploader user: root restart: unless-stopped depends_on: minio: condition: service_started networks: - cloud-storage environment: DEBUG: "true" REAPER_ENABLE: "true" REAPER_MIN_KEEP: "1" REAPER_INTERVAL: "5" S3_ENABLE: "true" GCS_ENABLE: "false" SIG_REQUIRE: "false" SIG_PRIORITIZE: "false" STREAM_EXTENSION: "rcd.gz" BUCKET_NAME: "hedera-streams" BUCKET_PATH: "recordstreams/record0.0.3/sidecar" S3_ACCESS_KEY: "minioadmin" S3_SECRET_KEY: "minioadmin" volumes: - "${NETWORK_NODE_LOGS_ROOT_PATH}/recordStreams/record0.0.3/sidecar:/sidecar-files" command: - /usr/bin/env - ${PYTHON_VERSION} - /usr/local/bin/mirror.py - --linux - --watch-directory - /sidecar-files - --s3-endpoint - http://minio:9000 - --debug grpc: image: "${MIRROR_IMAGE_PREFIX}hedera-mirror-grpc:${MIRROR_IMAGE_TAG}" container_name: mirror-node-grpc restart: unless-stopped mem_swappiness: 0 mem_limit: "${MIRROR_GRPC_MEM_LIMIT}" memswap_limit: "${MIRROR_GRPC_MEM_LIMIT}" depends_on: network-node: condition: service_started environment: HEDERA_MIRROR_GRPC_DB_HOST: db SPRING_CONFIG_ADDITIONAL_LOCATION: file:/usr/etc/hedera-mirror-grpc/ networks: - mirror-node ports: - "5600:5600" volumes: - "${MIRROR_NODE_CONFIG_PATH}/compose-network/mirror-node/application.yml:/usr/etc/hedera-mirror-grpc/application.yml" importer: image: "${MIRROR_IMAGE_PREFIX}hedera-mirror-importer:${MIRROR_IMAGE_TAG}" container_name: mirror-node-importer restart: unless-stopped mem_swappiness: 0 mem_limit: "${MIRROR_IMPORTER_MEM_LIMIT}" memswap_limit: "${MIRROR_IMPORTER_MEM_LIMIT}" depends_on: minio: condition: service_started environment: HEDERA_MIRROR_IMPORTER_DB_HOST: db SPRING_CONFIG_ADDITIONAL_LOCATION: file:/usr/etc/hedera-mirror-importer/ networks: - cloud-storage - mirror-node volumes: - "${MIRROR_NODE_CONFIG_PATH}/compose-network/mirror-node/application.yml:/usr/etc/hedera-mirror-importer/application.yml" - ./compose-network/mirror-node/addressBook.bin:/usr/etc/hedera-mirror-importer/local-dev-1-node.addressbook.f102.json.bin monitor: image: "${MIRROR_IMAGE_PREFIX}hedera-mirror-monitor:${MIRROR_IMAGE_TAG}" container_name: mirror-node-monitor mem_swappiness: 0 mem_limit: "${MIRROR_MONITOR_MEM_LIMIT}" memswap_limit: "${MIRROR_MONITOR_MEM_LIMIT}" depends_on: grpc: condition: service_started network-node: condition: service_healthy networks: - mirror-node - network-node-bridge environment: SPRING_CONFIG_ADDITIONAL_LOCATION: "file:/usr/etc/hedera-mirror-monitor/" ports: - "8082:8082" restart: unless-stopped tty: true volumes: - "${MIRROR_NODE_CONFIG_PATH}/compose-network/mirror-node/application.yml:/usr/etc/hedera-mirror-monitor/application.yml" relay: image: "${RELAY_IMAGE_PREFIX}hedera-json-rpc-relay:${RELAY_IMAGE_TAG}" container_name: json-rpc-relay mem_swappiness: 0 mem_limit: "${RELAY_MEM_LIMIT}" memswap_limit: "${RELAY_MEM_LIMIT}" depends_on: network-node: condition: service_healthy networks: - mirror-node - network-node-bridge environment: HEDERA_NETWORK: "${RELAY_HEDERA_NETWORK}" OPERATOR_ID_MAIN: "${RELAY_OPERATOR_ID_MAIN}" OPERATOR_KEY_MAIN: "${RELAY_OPERATOR_KEY_MAIN}" CHAIN_ID: "${RELAY_CHAIN_ID}" MIRROR_NODE_URL: "${RELAY_MIRROR_NODE_URL}" MIRROR_NODE_URL_WEB3: "${RELAY_MIRROR_NODE_URL_WEB3}" MIRROR_NODE_RETRIES: "${RELAY_MIRROR_NODE_RETRIES}" MIRROR_NODE_RETRY_DELAY: "${RELAY_MIRROR_NODE_RETRY_DELAY}" LOCAL_NODE: "${RELAY_LOCAL_NODE}" SERVER_PORT: "${RELAY_SERVER_PORT}" E2E_RELAY_HOST: "${RELAY_E2E_HOST}" FEE_HISTORY_MAX_RESULTS: "${RELAY_FEE_HISTORY_MAX_RESULTS}" DEFAULT_RATE_LIMIT: "${RELAY_DEFAULT_RATE_LIMIT}" TIER_1_RATE_LIMIT: "${RELAY_TIER_1_RATE_LIMIT}" TIER_2_RATE_LIMIT: "${RELAY_TIER_2_RATE_LIMIT}" TIER_3_RATE_LIMIT: "${RELAY_TIER_3_RATE_LIMIT}" ETH_CALL_DEFAULT_TO_CONSENSUS_NODE: "${RELAY_ETH_CALL_DEFAULT_TO_CONSENSUS_NODE}" LIMIT_DURATION: "${RELAY_LIMIT_DURATION}" HBAR_RATE_LIMIT_TINYBAR: "${RELAY_HBAR_RATE_LIMIT_TINYBAR}" HBAR_RATE_LIMIT_DURATION: "${RELAY_HBAR_RATE_LIMIT_DURATION}" ETH_GET_LOGS_BLOCK_RANGE_LIMIT: "${RELAY_ETH_GET_LOGS_BLOCK_RANGE_LIMIT}" DEV_MODE: "${RELAY_DEV_MODE}" INPUT_SIZE_LIMIT: "${RELAY_INPUT_SIZE_LIMIT}" RATE_LIMIT_DISABLED: "${RELAY_RATE_LIMIT_DISABLED}" ETH_POPULATE_SYNTHETIC_CONTRACT_RESULTS: "${RELAY_ETH_POPULATE_SYNTHETIC_CONTRACT_RESULTS}" REDIS_ENABLED: "${RELAY_REDIS_ENABLED}" REDIS_URL: "${RELAY_REDIS_URL}" MIRROR_NODE_GET_CONTRACT_RESULTS_RETRIES: "${RELAY_MIRROR_NODE_GET_CONTRACT_RESULTS_RETRIES}" ports: - "7546:7546" restart: unless-stopped tty: false relay-ws: image: "${RELAY_IMAGE_PREFIX}hedera-json-rpc-relay:${RELAY_IMAGE_TAG}" container_name: json-rpc-relay-ws mem_swappiness: 0 mem_limit: "${RELAY_MEM_LIMIT}" memswap_limit: "${RELAY_MEM_LIMIT}" depends_on: network-node: condition: service_healthy networks: - mirror-node - network-node-bridge environment: HEDERA_NETWORK: "${RELAY_HEDERA_NETWORK}" OPERATOR_ID_MAIN: "${RELAY_OPERATOR_ID_MAIN}" OPERATOR_KEY_MAIN: "${RELAY_OPERATOR_KEY_MAIN}" CHAIN_ID: "${RELAY_CHAIN_ID}" MIRROR_NODE_URL: "${RELAY_MIRROR_NODE_URL}" MIRROR_NODE_RETRIES: "${RELAY_MIRROR_NODE_RETRIES}" MIRROR_NODE_RETRY_DELAY: "${RELAY_MIRROR_NODE_RETRY_DELAY}" LOCAL_NODE: "${RELAY_LOCAL_NODE}" SERVER_PORT: "${RELAY_SERVER_PORT}" E2E_RELAY_HOST: "${RELAY_E2E_HOST}" FEE_HISTORY_MAX_RESULTS: "${RELAY_FEE_HISTORY_MAX_RESULTS}" DEFAULT_RATE_LIMIT: "${RELAY_DEFAULT_RATE_LIMIT}" TIER_1_RATE_LIMIT: "${RELAY_TIER_1_RATE_LIMIT}" TIER_2_RATE_LIMIT: "${RELAY_TIER_2_RATE_LIMIT}" TIER_3_RATE_LIMIT: "${RELAY_TIER_3_RATE_LIMIT}" ETH_CALL_DEFAULT_TO_CONSENSUS_NODE: "${RELAY_ETH_CALL_DEFAULT_TO_CONSENSUS_NODE}" LIMIT_DURATION: "${RELAY_LIMIT_DURATION}" HBAR_RATE_LIMIT_TINYBAR: "${RELAY_HBAR_RATE_LIMIT_TINYBAR}" HBAR_RATE_LIMIT_DURATION: "${RELAY_HBAR_RATE_LIMIT_DURATION}" ETH_GET_LOGS_BLOCK_RANGE_LIMIT: "${RELAY_ETH_GET_LOGS_BLOCK_RANGE_LIMIT}" DEV_MODE: "${RELAY_DEV_MODE}" INPUT_SIZE_LIMIT: "${RELAY_INPUT_SIZE_LIMIT}" RATE_LIMIT_DISABLED: "${RELAY_RATE_LIMIT_DISABLED}" SUBSCRIPTIONS_ENABLED: true HEALTHCHECK_PORT: 8547 ETH_POPULATE_SYNTHETIC_CONTRACT_RESULTS: "${RELAY_ETH_POPULATE_SYNTHETIC_CONTRACT_RESULTS}" REDIS_ENABLED: "${RELAY_REDIS_ENABLED}" REDIS_URL: "${RELAY_REDIS_URL}" WS_CONNECTION_LIMIT_PER_IP: "${RELAY_WS_CONNECTION_LIMIT_PER_IP}" WS_CONNECTION_LIMIT: "${RELAY_WS_CONNECTION_LIMIT}" WS_MAX_INACTIVITY_TTL: "${RELAY_WS_MAX_INACTIVITY_TTL}" WS_MULTIPLE_ADDRESSES_ENABLED: "${RELAY_WS_MULTIPLE_ADDRESSES_ENABLED}" WS_SUBSCRIPTION_LIMIT: "${RELAY_WS_SUBSCRIPTION_LIMIT}" ports: - "8546:8546" - "8547:8547" restart: unless-stopped tty: false command: ["start:ws"] networks: network-node-bridge: name: hedera-network-node-bridge driver: bridge ipam: driver: default config: - subnet: 172.27.0.0/16 ip_range: 172.27.0.0/24 gateway: 172.27.0.254 mirror-node: name: hedera-mirror-node driver: bridge cloud-storage: name: hedera-cloud-storage driver: bridge volumes: mirror-node-postgres: name: mirror-node-postgres minio-data: name: minio-data prometheus-data: name: prometheus-data grafana-data: name: grafana-data