UNPKG

@hashgraph/hedera-local

Version:

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

599 lines (574 loc) 20.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}" JAVA_TOOL_OPTIONS: "${PLATFORM_JAVA_OPTS}" CONSENSUS_NODE_ID: "0" healthcheck: test: [ "CMD", "grep", "-Ei", "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" - "${APPLICATION_CONFIG_PATH}:/opt/hgcapp/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" 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:/records" command: - /usr/bin/env - ${PYTHON_VERSION} - /usr/local/bin/mirror.py - --linux - --watch-directory - /records - --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:/balances" command: - /usr/bin/env - ${PYTHON_VERSION} - /usr/local/bin/mirror.py - --linux - --watch-directory - /balances - --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 minio: image: ghcr.io/mhga24/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" db: image: "${MIRROR_POSTGRES_IMAGE}" container_name: mirror-node-db environment: POSTGRES_HOST_AUTH_METHOD: scram-sha-256 POSTGRES_INITDB_ARGS: --auth-host=scram-sha-256 GRPC_PASSWORD: mirror_grpc_pass IMPORTER_PASSWORD: mirror_importer_pass OWNER_PASSWORD: mirror_node_pass POSTGRES_PASSWORD: postgres_password REST_PASSWORD: mirror_api_pass ROSETTA_PASSWORD: mirror_rosetta_pass networks: - mirror-node ports: - "5433:5432" restart: unless-stopped stop_grace_period: 2m stop_signal: SIGTERM tty: true volumes: - ./compose-network/mirror-node/init.sh:/docker-entrypoint-initdb.d/init.sh - type: volume source: mirror-node-postgres target: /var/lib/postgresql/data grpc: image: "${MIRROR_IMAGE_PREFIX}hedera-mirror-grpc:${MIRROR_GRPC_IMAGE_TAG:-${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 db: condition: service_started environment: HEDERA_MIRROR_GRPC_DB_HOST: db SPRING_CONFIG_ADDITIONAL_LOCATION: file:/usr/etc/hedera-mirror-grpc/ JAVA_TOOL_OPTIONS: "${GRPC_PLATFORM_JAVA_OPTS}" 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_IMPORTER_IMAGE_TAG:-${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 db: condition: service_started environment: HEDERA_MIRROR_IMPORTER_DB_HOST: db SPRING_CONFIG_ADDITIONAL_LOCATION: file:/usr/etc/hedera-mirror-importer/ JAVA_TOOL_OPTIONS: "${GRPC_PLATFORM_JAVA_OPTS}" 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 rest: image: "${MIRROR_IMAGE_PREFIX}hedera-mirror-rest:${MIRROR_REST_IMAGE_TAG:-${MIRROR_IMAGE_TAG}}" container_name: mirror-node-rest mem_swappiness: 0 mem_limit: "${MIRROR_REST_MEM_LIMIT}" memswap_limit: "${MIRROR_REST_MEM_LIMIT}" depends_on: importer: condition: service_started db: condition: service_started environment: HEDERA_MIRROR_REST_DB_HOST: db networks: - mirror-node ports: - "5551:5551" restart: unless-stopped tty: false rest-java: image: "${MIRROR_IMAGE_PREFIX}hedera-mirror-rest-java:${MIRROR_REST_IMAGE_TAG:-${MIRROR_IMAGE_TAG}}" container_name: mirror-node-rest-java mem_swappiness: 0 mem_limit: "${MIRROR_REST_MEM_LIMIT}" memswap_limit: "${MIRROR_REST_MEM_LIMIT}" depends_on: importer: condition: service_started db: condition: service_started environment: HEDERA_MIRROR_RESTJAVA_DB_HOST: db SPRING_CONFIG_ADDITIONAL_LOCATION: file:/usr/etc/hedera-mirror-rest-java/ JAVA_TOOL_OPTIONS: "${GRPC_PLATFORM_JAVA_OPTS}" networks: - mirror-node ports: - 8084:8084 restart: unless-stopped tty: true volumes: - ./application.yml:/usr/etc/hedera-mirror-rest-java/application.yml explorer: container_name: hedera-explorer image: "${MIRROR_NODE_EXPLORER_IMAGE_PREFIX}hedera-mirror-node-explorer:${MIRROR_NODE_EXPLORER_IMAGE_TAG}" restart: "unless-stopped" ports: - "8090:8080" environment: DOCKER_LOCAL_MIRROR_NODE_MENU_NAME: ${DOCKER_LOCAL_MIRROR_NODE_MENU_NAME} DOCKER_LOCAL_MIRROR_NODE_URL: ${DOCKER_LOCAL_MIRROR_NODE_URL} networks: - mirror-node web3: image: "${MIRROR_IMAGE_PREFIX}hedera-mirror-web3:${MIRROR_WEB3_IMAGE_TAG:-${MIRROR_IMAGE_TAG}}" container_name: mirror-node-web3 mem_swappiness: 0 mem_limit: "${MIRROR_WEB3_MEM_LIMIT}" memswap_limit: "${MIRROR_WEB3_MEM_LIMIT}" depends_on: importer: condition: service_started db: condition: service_started networks: - mirror-node environment: HEDERA_MIRROR_WEB3_DB_HOST: db HEDERA_MIRROR_WEB3_EVM_NETWORK: OTHER HEDERA_MIRROR_WEB3_EVM_MODULARIZEDSERVICES: ${MIRROR_WEB3_EVM_MODULARIZEDSERVICES} HEDERA_MIRROR_WEB3_EVM_MODULARIZEDTRAFFICPERCENT: ${MIRROR_WEB3_EVM_MODULARIZEDTRAFFICPERCENT} SPRING_CONFIG_ADDITIONAL_LOCATION: file:/usr/etc/hedera-mirror-web3/ JAVA_TOOL_OPTIONS: "${GRPC_PLATFORM_JAVA_OPTS}" ports: - "8545:8545" restart: unless-stopped tty: true volumes: - "${MIRROR_NODE_CONFIG_PATH}/compose-network/mirror-node/application.yml:/usr/etc/hedera-mirror-web3/application.yml" monitor: image: "${MIRROR_IMAGE_PREFIX}hedera-mirror-monitor:${MIRROR_MONITOR_IMAGE_TAG:-${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 rest: 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/" JAVA_TOOL_OPTIONS: "${GRPC_PLATFORM_JAVA_OPTS}" 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" block-node: image: "${BLOCK_NODE_IMAGE_PREFIX}hiero-block-node:${BLOCK_NODE_IMAGE_TAG}" container_name: block-node networks: - network-node-bridge - mirror-node environment: VERSION: ${BLOCK_NODE_IMAGE_TAG} REGISTRY_PREFIX: ${BLOCK_NODE_REGISTRY_PREFIX} BLOCKNODE_STORAGE_ROOT_PATH: ${BLOCK_NODE_STORAGE_ROOT_PATH} JAVA_OPTS: ${BLOCK_NODE_JAVA_OPTS} ports: - "8080:8080" - "9998:9999" cadvisor: image: "gcr.io/cadvisor/cadvisor:v0.47.0" container_name: cadvisor ports: - "8081:8080" volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro relay: image: "${RELAY_IMAGE_PREFIX}hiero-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: rest: condition: service_started 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}" DEBUG_API_ENABLED: "${RELAY_DEBUG_API_ENABLED}" HBAR_RATE_LIMIT_BASIC: "${RELAY_HBAR_RATE_LIMIT_BASIC}" HBAR_RATE_LIMIT_EXTENDED: "${RELAY_HBAR_RATE_LIMIT_EXTENDED}" HBAR_RATE_LIMIT_PRIVILEGED: "${RELAY_HBAR_RATE_LIMIT_PRIVILEGED}" ports: - "7546:7546" restart: unless-stopped tty: false relay-ws: image: "${RELAY_IMAGE_PREFIX}hiero-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: rest: condition: service_started 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"] envoy: image: "${ENVOY_IMAGE_PREFIX}envoy:${ENVOY_IMAGE_TAG}" container_name: envoy-proxy ports: - "50213:50213" volumes: - ./envoy.yaml:/etc/envoy/envoy.yaml networks: - network-node-bridge prometheus: image: "${PROMETHEUS_IMAGE_NAME}:${PROMETHEUS_IMAGE_TAG}" container_name: prometheus restart: unless-stopped volumes: - ./compose-network/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml - prometheus-data:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--web.console.libraries=/etc/prometheus/console_libraries' - '--web.console.templates=/etc/prometheus/consoles' - '--web.enable-lifecycle' ports: - "9090:9090" networks: network-node-bridge: ipv4_address: 172.27.0.4 mirror-node: grafana: image: "${GRAFANA_IMAGE_NAME}:${GRAFANA_IMAGE_TAG}" container_name: grafana ports: - "3000:3000" restart: unless-stopped environment: GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION: "true" GF_AUTH_ANONYMOUS_ENABLED: "true" GF_AUTH_ANONYMOUS_ORG_ROLE: "Admin" GF_AUTH_DISABLE_SIGNOUT_MENU: "true" GF_AUTH_DISABLE_LOGIN_FORM: "true" volumes: - ./compose-network/grafana/datasources:/etc/grafana/provisioning/datasources - ./compose-network/grafana/dashboards:/etc/grafana/provisioning/dashboards - grafana-data:/var/lib/grafana networks: network-node-bridge: ipv4_address: 172.27.0.5 mirror-node: cache: image: ghcr.io/mhga24/redis:6-alpine container_name: relay-cache mem_limit: "${RELAY_MEM_LIMIT}" memswap_limit: "${RELAY_MEM_LIMIT}" ports: - 6379:6379 restart: unless-stopped stop_signal: SIGTERM tty: true networks: network-node-bridge: ipv4_address: 172.27.0.50 networks: network-node-bridge: name: hedera-network-node 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