version: '3.8' services: bootstrap: container_name: bootstrap build: context: . dockerfile: testnet/Dockerfile image: nomos:latest ports: - "3000:3000/udp" - "18080:18080/tcp" volumes: - ./testnet:/etc/nomos depends_on: - graylog environment: - BOOTSTRAP_NODE_KEY=${DOCKER_COMPOSE_BOOSTRAP_NET_NODE_KEY:-1000000000000000000000000000000000000000000000000000000000000000} - LIBP2P_NODE_MASK=${DOCKER_COMPOSE_LIBP2P_NODE_KEY_MASK:-2000000000000000000000000000000000000000000000000000000000000000} - LIBP2P_REPLICAS=3 - OVERLAY_NODES=${DOCKER_COMPOSE_OVERLAY_NODES:-1000000000000000000000000000000000000000000000000000000000000000} entrypoint: /etc/nomos/scripts/run_bootstrap_node.sh libp2p-node-1: container_name: libp2p_node_1 image: nomos:latest volumes: - ./testnet:/etc/nomos depends_on: - bootstrap - etcd - graylog ports: - "3001:3000/udp" - "18081:18080/tcp" environment: - LIBP2P_REPLICAS=3 - ETCDCTL_ENDPOINTS=${DOCKER_COMPOSE_ETCDCTL_ENDPOINTS:-etcd:2379} - ETCDCTL_API=${DOCKER_COMPOSE_ETCDCTL_API:-3} - LIBP2P_NODE_MASK=${DOCKER_COMPOSE_LIBP2P_NODE_KEY_MASK:-2000000000000000000000000000000000000000000000000000000000000000} - OVERLAY_NODES=${DOCKER_COMPOSE_OVERLAY_NODES:-1000000000000000000000000000000000000000000000000000000000000000} - OVERLAY_SUPER_MAJORITY_THRESHOLD=${DOCKER_COMPOSE_SUPER_MAJORITY_THRESHOLD:-1} - NET_INITIAL_PEERS=${DOCKER_COMPOSE_NET_INITIAL_PEERS:-/dns/bootstrap/udp/3000/quic-v1} entrypoint: /etc/nomos/scripts/run_nomos_node.sh libp2p-node-2: container_name: libp2p_node_2 image: nomos:latest volumes: - ./testnet:/etc/nomos depends_on: - bootstrap - etcd - graylog ports: - "3002:3000/udp" - "18082:18080/tcp" environment: - LIBP2P_REPLICAS=3 - ETCDCTL_ENDPOINTS=${DOCKER_COMPOSE_ETCDCTL_ENDPOINTS:-etcd:2379} - ETCDCTL_API=${DOCKER_COMPOSE_ETCDCTL_API:-3} - LIBP2P_NODE_MASK=${DOCKER_COMPOSE_LIBP2P_NODE_KEY_MASK:-2000000000000000000000000000000000000000000000000000000000000000} - OVERLAY_NODES=${DOCKER_COMPOSE_OVERLAY_NODES:-1000000000000000000000000000000000000000000000000000000000000000} - OVERLAY_SUPER_MAJORITY_THRESHOLD=${DOCKER_COMPOSE_SUPER_MAJORITY_THRESHOLD:-1} - NET_INITIAL_PEERS=${DOCKER_COMPOSE_NET_INITIAL_PEERS:-/dns/bootstrap/udp/3000/quic-v1} entrypoint: /etc/nomos/scripts/run_nomos_node.sh libp2p-node-3: container_name: libp2p_node_3 image: nomos:latest volumes: - ./testnet:/etc/nomos depends_on: - bootstrap - etcd - graylog ports: - "3003:3000/udp" - "18083:18080/tcp" environment: - LIBP2P_REPLICAS=3 - ETCDCTL_ENDPOINTS=${DOCKER_COMPOSE_ETCDCTL_ENDPOINTS:-etcd:2379} - ETCDCTL_API=${DOCKER_COMPOSE_ETCDCTL_API:-3} - LIBP2P_NODE_MASK=${DOCKER_COMPOSE_LIBP2P_NODE_KEY_MASK:-2000000000000000000000000000000000000000000000000000000000000000} - OVERLAY_NODES=${DOCKER_COMPOSE_OVERLAY_NODES:-1000000000000000000000000000000000000000000000000000000000000000} - OVERLAY_SUPER_MAJORITY_THRESHOLD=${DOCKER_COMPOSE_SUPER_MAJORITY_THRESHOLD:-1} - NET_INITIAL_PEERS=${DOCKER_COMPOSE_NET_INITIAL_PEERS:-/dns/bootstrap/udp/3000/quic-v1} entrypoint: /etc/nomos/scripts/run_nomos_node.sh chatbot: container_name: chatbot image: nomos:latest volumes: - ./testnet:/etc/nomos entrypoint: /etc/nomos/scripts/run_nomos_bot.sh etcd: container_name: etcd image: quay.io/coreos/etcd:v3.4.15 ports: - "2379:2379/tcp" command: - /usr/local/bin/etcd - --advertise-client-urls=http://etcd:2379 - --listen-client-urls=http://0.0.0.0:2379 prometheus: container_name: prometheus image: prom/prometheus:latest volumes: - ./testnet/monitoring/prometheus-config.yml:/etc/prometheus/prometheus.yml:z command: - --config.file=/etc/prometheus/prometheus.yml - --storage.tsdb.retention.time=7d ports: - 127.0.0.1:9090:9090 restart: on-failure grafana: container_name: grafana image: grafana/grafana:latest env_file: - ./testnet/monitoring/grafana/plugins.env volumes: - ./testnet/monitoring/grafana/grafana.ini:/etc/grafana/grafana.ini:z - ./testnet/monitoring/grafana/datasources.yaml:/etc/grafana/provisioning/datasources/datasources.yaml:z ports: - 9091:3000 restart: on-failure depends_on: - prometheus # Graylog related configuration # More information at https://github.com/Graylog2/docker-compose/blob/main/open-core/docker-compose.yml mongodb: image: "mongo:5.0" volumes: - "mongodb_data:/data/db" restart: "on-failure" datanode: image: "${DATANODE_IMAGE:-graylog/graylog-datanode:5.2}" hostname: "datanode" environment: GRAYLOG_DATANODE_NODE_ID_FILE: "/var/lib/graylog-datanode/node-id" GRAYLOG_DATANODE_PASSWORD_SECRET: "${GRAYLOG_PASSWORD_SECRET:?Please configure GRAYLOG_PASSWORD_SECRET in the .env file}" GRAYLOG_DATANODE_ROOT_PASSWORD_SHA2: "${GRAYLOG_ROOT_PASSWORD_SHA2:?Please configure GRAYLOG_ROOT_PASSWORD_SHA2 in the .env file}" GRAYLOG_DATANODE_MONGODB_URI: "mongodb://mongodb:27017/graylog" ulimits: memlock: hard: -1 soft: -1 nofile: soft: 65536 hard: 65536 ports: - "8999:8999/tcp" # DataNode API - "9200:9200/tcp" - "9300:9300/tcp" volumes: - "graylog-datanode:/var/lib/graylog-datanode" restart: "on-failure" graylog: image: "${GRAYLOG_IMAGE:-graylog/graylog:5.2}" depends_on: mongodb: condition: "service_started" entrypoint: "/usr/bin/tini -- /docker-entrypoint.sh" environment: GRAYLOG_NODE_ID_FILE: "/usr/share/graylog/data/data/node-id" GRAYLOG_PASSWORD_SECRET: "${GRAYLOG_PASSWORD_SECRET:?Please configure GRAYLOG_PASSWORD_SECRET in the .env file}" GRAYLOG_ROOT_PASSWORD_SHA2: "${GRAYLOG_ROOT_PASSWORD_SHA2:?Please configure GRAYLOG_ROOT_PASSWORD_SHA2 in the .env file}" GRAYLOG_HTTP_BIND_ADDRESS: "0.0.0.0:9000" GRAYLOG_HTTP_EXTERNAL_URI: "http://localhost:9000/" GRAYLOG_MONGODB_URI: "mongodb://mongodb:27017/graylog" ports: - "9000:9000/tcp" # Server API - "12201:12201/tcp" # GELF TCP - "12201:12201/udp" # GELF UDP volumes: - "graylog_data:/usr/share/graylog/data/data" - "graylog_journal:/usr/share/graylog/data/journal" - ./testnet/monitoring/graylog.conf:/usr/share/graylog/data/config/graylog.conf restart: "on-failure" volumes: mongodb_data: graylog-datanode: graylog_data: graylog_journal: