@hashgraph/hedera-local
Version:
Developer tooling for running Local Hedera Network (Consensus + Mirror Nodes).
599 lines (574 loc) • 20.1 kB
YAML
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