mirror of
https://github.com/NationalSecurityAgency/datawave.git
synced 2026-11-10 11:41:46 -10:00
1049 lines
33 KiB
YAML
1049 lines
33 KiB
YAML
volumes:
|
|
hdfs_name:
|
|
hdfs_data:
|
|
zookeeper_data:
|
|
datawave_accumulo_ext:
|
|
|
|
services:
|
|
datawave-extlib:
|
|
profiles: [datawave-stack]
|
|
image: nationalsecurityagency/datawave/ingest-compose:${VERSION:-latest}
|
|
user: root
|
|
entrypoint: ["/bin/bash", "-c"]
|
|
command:
|
|
- |
|
|
set -e
|
|
target=/opt/accumulo/lib/ext
|
|
rm -f "$${target}/"*.jar
|
|
cp /opt/datawave-ingest/current/accumulo-warehouse/lib/*.jar "$${target}/"
|
|
cp /opt/datawave-ingest/current/accumulo-warehouse/lib/ext/*.jar "$${target}/"
|
|
cp /opt/datawave-ingest/current/lib/accumulo-access-core-*.jar "$${target}/"
|
|
cp /opt/datawave-ingest/current/lib/jaxb-api-*.jar "$${target}/"
|
|
chmod 0644 "$${target}/"*.jar
|
|
volumes:
|
|
- datawave_accumulo_ext:/opt/accumulo/lib/ext
|
|
networks: [demo]
|
|
|
|
hdfs-nn:
|
|
profiles: [datawave-stack]
|
|
image: &stack-image ghcr.io/nationalsecurityagency/datawave-stack-accumulo:${DATAWAVE_STACK_ACCUMULO_VERSION:-2.1.6}
|
|
user: hdfs
|
|
entrypoint: ["/bin/bash", "/stack/start-hadoop.sh"]
|
|
command: [namenode]
|
|
environment:
|
|
- HADOOP_CONF_DIR=/stack
|
|
ports:
|
|
- "9000:9000"
|
|
- "9870:9870"
|
|
volumes:
|
|
- ./stack:/stack:ro
|
|
- hdfs_name:/var/lib/hadoop-hdfs
|
|
networks: [demo]
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "hdfs dfsadmin -safemode get | grep -q OFF"]
|
|
interval: 2s
|
|
timeout: 5s
|
|
start_period: 15s
|
|
retries: 30
|
|
|
|
hdfs-dn:
|
|
profiles: [datawave-stack]
|
|
image: *stack-image
|
|
user: hdfs
|
|
entrypoint: ["/bin/bash", "/stack/start-hadoop.sh"]
|
|
command: [datanode]
|
|
environment:
|
|
- HADOOP_CONF_DIR=/stack
|
|
ports:
|
|
- "9864:9864"
|
|
volumes:
|
|
- ./stack:/stack:ro
|
|
- hdfs_data:/var/lib/hadoop-hdfs
|
|
networks: [demo]
|
|
depends_on:
|
|
hdfs-nn:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "hdfs dfsadmin -report | grep -q 'Live datanodes (1)' "]
|
|
interval: 2s
|
|
timeout: 5s
|
|
retries: 30
|
|
|
|
yarn-rm:
|
|
profiles: [datawave-stack]
|
|
image: *stack-image
|
|
user: hdfs
|
|
entrypoint: ["/bin/bash", "/stack/start-hadoop.sh"]
|
|
command: [resourcemanager]
|
|
environment:
|
|
- HADOOP_CONF_DIR=/stack
|
|
- YARN_CONF_DIR=/stack
|
|
ports:
|
|
- "8032:8032"
|
|
- "8088:8088"
|
|
volumes:
|
|
- ./stack:/stack:ro
|
|
networks: [demo]
|
|
depends_on:
|
|
hdfs-dn:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "bash -c '</dev/tcp/localhost/8032'"]
|
|
interval: 2s
|
|
timeout: 3s
|
|
retries: 30
|
|
|
|
yarn-nm:
|
|
profiles: [datawave-stack]
|
|
image: *stack-image
|
|
user: hdfs
|
|
entrypoint: ["/bin/bash", "/stack/start-hadoop.sh"]
|
|
command: [nodemanager]
|
|
environment:
|
|
- HADOOP_CONF_DIR=/stack
|
|
- YARN_CONF_DIR=/stack
|
|
ports:
|
|
- "8042:8042"
|
|
volumes:
|
|
- ./stack:/stack:ro
|
|
networks: [demo]
|
|
depends_on:
|
|
yarn-rm:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "bash -c '</dev/tcp/localhost/8042'"]
|
|
interval: 2s
|
|
timeout: 3s
|
|
retries: 30
|
|
|
|
zookeeper:
|
|
profiles: [datawave-stack]
|
|
image: *stack-image
|
|
user: zookeeper
|
|
entrypoint: ["/usr/lib/zookeeper/bin/zkServer.sh"]
|
|
command: ["--config", "/etc/zookeeper/conf.dist", "start-foreground"]
|
|
environment:
|
|
- ZOOBINDIR=/usr/lib/zookeeper/bin
|
|
- ZOO_LOG_DIR=/var/log/zookeeper
|
|
ports:
|
|
- "2181:2181"
|
|
volumes:
|
|
- zookeeper_data:/var/lib/zookeeper
|
|
networks: [demo]
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "echo ruok | timeout 2 bash -c 'cat > /dev/tcp/localhost/2181' "]
|
|
interval: 2s
|
|
timeout: 3s
|
|
start_period: 10s
|
|
retries: 30
|
|
|
|
accumulo-manager:
|
|
profiles: [datawave-stack]
|
|
image: *stack-image
|
|
command: [manager]
|
|
environment:
|
|
- ACCUMULO_INSTANCE_NAME=my-instance-01
|
|
- ACCUMULO_ROOT_PASSWORD=secret
|
|
- HADOOP_CONF_DIR=/stack
|
|
volumes:
|
|
- ./stack:/stack:ro
|
|
- datawave_accumulo_ext:/opt/accumulo/lib/ext:ro
|
|
- ./stack/accumulo.properties:/opt/accumulo/conf/accumulo.properties:ro
|
|
- ./stack/accumulo-client.properties:/opt/accumulo/conf/accumulo-client.properties:ro
|
|
- ./stack/accumulo-env.sh:/opt/accumulo/conf/accumulo-env.sh:ro
|
|
networks: [demo]
|
|
depends_on:
|
|
datawave-extlib:
|
|
condition: service_completed_successfully
|
|
hdfs-dn:
|
|
condition: service_healthy
|
|
zookeeper:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "bash -c '</dev/tcp/localhost/9999'"]
|
|
interval: 3s
|
|
timeout: 5s
|
|
start_period: 20s
|
|
retries: 40
|
|
|
|
accumulo-tserver:
|
|
profiles: [datawave-stack]
|
|
image: *stack-image
|
|
command: [tserver]
|
|
environment:
|
|
- HADOOP_CONF_DIR=/stack
|
|
volumes:
|
|
- ./stack:/stack:ro
|
|
- datawave_accumulo_ext:/opt/accumulo/lib/ext:ro
|
|
- ./stack/accumulo.properties:/opt/accumulo/conf/accumulo.properties:ro
|
|
- ./stack/accumulo-client.properties:/opt/accumulo/conf/accumulo-client.properties:ro
|
|
- ./stack/accumulo-env.sh:/opt/accumulo/conf/accumulo-env.sh:ro
|
|
networks: [demo]
|
|
depends_on:
|
|
accumulo-manager:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "bash -c '</dev/tcp/localhost/9997'"]
|
|
interval: 3s
|
|
timeout: 3s
|
|
retries: 30
|
|
|
|
accumulo-gc:
|
|
profiles: [datawave-stack]
|
|
image: *stack-image
|
|
command: [gc]
|
|
environment:
|
|
- HADOOP_CONF_DIR=/stack
|
|
volumes:
|
|
- ./stack:/stack:ro
|
|
- datawave_accumulo_ext:/opt/accumulo/lib/ext:ro
|
|
- ./stack/accumulo.properties:/opt/accumulo/conf/accumulo.properties:ro
|
|
- ./stack/accumulo-client.properties:/opt/accumulo/conf/accumulo-client.properties:ro
|
|
- ./stack/accumulo-env.sh:/opt/accumulo/conf/accumulo-env.sh:ro
|
|
networks: [demo]
|
|
depends_on:
|
|
accumulo-manager:
|
|
condition: service_healthy
|
|
|
|
accumulo-monitor:
|
|
profiles: [datawave-stack]
|
|
image: *stack-image
|
|
command: [monitor]
|
|
environment:
|
|
- HADOOP_CONF_DIR=/stack
|
|
ports:
|
|
- "9995:9995"
|
|
volumes:
|
|
- ./stack:/stack:ro
|
|
- datawave_accumulo_ext:/opt/accumulo/lib/ext:ro
|
|
- ./stack/accumulo.properties:/opt/accumulo/conf/accumulo.properties:ro
|
|
- ./stack/accumulo-client.properties:/opt/accumulo/conf/accumulo-client.properties:ro
|
|
- ./stack/accumulo-env.sh:/opt/accumulo/conf/accumulo-env.sh:ro
|
|
networks: [demo]
|
|
depends_on:
|
|
accumulo-manager:
|
|
condition: service_healthy
|
|
|
|
ingest:
|
|
profiles: [datawave-stack]
|
|
image: nationalsecurityagency/datawave/ingest-compose:${VERSION:-latest}
|
|
user: datawave
|
|
entrypoint: ["/bin/bash", "/stack/initialize-datawave.sh"]
|
|
environment:
|
|
- HADOOP_CONF_DIR=/stack
|
|
volumes:
|
|
- ./stack:/stack:ro
|
|
- ./stack/accumulo.properties:/opt/accumulo/conf/accumulo.properties:ro
|
|
- ./stack/accumulo-client.properties:/opt/accumulo/conf/accumulo-client.properties:ro
|
|
- ./stack/accumulo-env.sh:/opt/accumulo/conf/accumulo-env.sh:ro
|
|
- ./stack/ingest-passwd.sh:/opt/datawave-ingest/ingest-passwd.sh:ro
|
|
- ../warehouse/ingest-wikipedia/src/test/resources/input:/opt/datawave-test-data/wikipedia:ro
|
|
- ../warehouse/ingest-annotation/src/test/resources/input:/opt/datawave-test-data/annotation:ro
|
|
- ../warehouse/ingest-json/src/test/resources/input:/opt/datawave-test-data/json:ro
|
|
- ../warehouse/ingest-csv/src/test/resources/input:/opt/datawave-test-data/csv:ro
|
|
networks: [demo]
|
|
depends_on:
|
|
accumulo-tserver:
|
|
condition: service_healthy
|
|
yarn-nm:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: ["CMD", "test", "-f", "/tmp/datawave-ready"]
|
|
interval: 5s
|
|
timeout: 2s
|
|
start_period: 30s
|
|
retries: 120
|
|
|
|
webservice:
|
|
profiles: [datawave-stack]
|
|
image: nationalsecurityagency/datawave/webservice-compose:${VERSION:-latest}
|
|
environment:
|
|
- ACCUMULO_PASSWORD=secret
|
|
- KEYSTORE=/opt/jboss/wildfly/standalone/configuration/certificates/testServer.p12
|
|
- KEYSTORE_TYPE=PKCS12
|
|
- KEYSTORE_PASSWORD=ChangeIt
|
|
- TRUSTSTORE=/opt/jboss/wildfly/standalone/configuration/certificates/ca.jks
|
|
- TRUSTSTORE_TYPE=JKS
|
|
- TRUSTSTORE_PASSWORD=ChangeIt
|
|
ports:
|
|
- "9443:8443" # web server
|
|
- "9990:9990" # wildfly admin
|
|
volumes:
|
|
- ./stack:/stack:ro
|
|
- ./logs:/logs
|
|
networks: [demo]
|
|
depends_on:
|
|
ingest:
|
|
condition: service_healthy
|
|
authorization:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "bash -c '</dev/tcp/localhost/8443'"]
|
|
interval: 5s
|
|
timeout: 3s
|
|
start_period: 60s
|
|
retries: 60
|
|
|
|
consul:
|
|
image: docker.io/hashicorp/consul:1.15.4
|
|
hostname: localhost
|
|
environment:
|
|
- 'CONSUL_LOCAL_CONFIG={"log_level": "ERROR", "datacenter": "demo_dc", "disable_update_check": true, "enable_agent_tls_for_checks": true, "addresses": {"https": "0.0.0.0"}, "ports": {"https": 8501, "grpc_tls": 8503}, "tls": {"defaults": {"key_file": "/etc/pki/testServer.key", "cert_file": "/etc/pki/testServer.crt", "ca_file": "/etc/pki/testCA.pem", "verify_outgoing": true}, "internal_rpc": {"verify_server_hostname": false}}}'
|
|
- CONSUL_BIND_INTERFACE=eth0
|
|
# defined as host:container
|
|
ports:
|
|
- "8400"
|
|
- "8500:8500"
|
|
- "8501:8501"
|
|
- "8503:8503"
|
|
- "53"
|
|
volumes:
|
|
- ${PKI_DIR:-./pki}:/etc/pki:ro
|
|
networks:
|
|
- demo
|
|
|
|
rabbitmq:
|
|
image: docker.io/rabbitmq:3.12.4
|
|
volumes:
|
|
- ${RABBITMQ_CONFIG_DIR:-./rabbitmq-config}:/etc/rabbitmq
|
|
- ./logs:/logs
|
|
environment:
|
|
- TCP_PORTS=15672, 5672
|
|
- RABBITMQ_ERLANG_COOKIE="mycookie"
|
|
ports:
|
|
- "5672:5672"
|
|
- "15672:15672"
|
|
networks:
|
|
- demo
|
|
healthcheck:
|
|
test: ["CMD", "rabbitmq-diagnostics", "-q", "ping"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
start_period: 30s
|
|
retries: 20
|
|
depends_on:
|
|
consul:
|
|
condition: service_started
|
|
|
|
qr-rabbitmq:
|
|
image: docker.io/rabbitmq:3.12.4
|
|
volumes:
|
|
- ${RABBITMQ_CONFIG_DIR:-./rabbitmq-config}:/etc/rabbitmq
|
|
- ./logs:/logs
|
|
environment:
|
|
- TCP_PORTS=25672, 15672, 5672
|
|
- RABBITMQ_ERLANG_COOKIE="mycookie"
|
|
ports:
|
|
- "5673:5672"
|
|
- "15673:15672"
|
|
- "25673:25672"
|
|
networks:
|
|
- demo
|
|
depends_on:
|
|
consul:
|
|
condition: service_started
|
|
|
|
# When auto.create.topics.enable is true, this causes deleted topics to be recreated at random. So, leave it disabled.
|
|
kafka:
|
|
profiles:
|
|
- kafka
|
|
image: docker.io/bitnami/kafka:3.2
|
|
ports:
|
|
- "9094:9094"
|
|
networks:
|
|
- demo
|
|
environment:
|
|
- KAFKA_CFG_NODE_ID=1
|
|
- KAFKA_CFG_PROCESS_ROLES=controller,broker
|
|
- ALLOW_PLAINTEXT_LISTENER=yes
|
|
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT
|
|
- KAFKA_CFG_LISTENERS=CLIENT://:9092,CONTROLLER://:9093,EXTERNAL://:9094
|
|
- KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka:9092,EXTERNAL://${DW_HOSTNAME}:9094
|
|
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka:9093
|
|
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
|
|
- KAFKA_INTER_BROKER_LISTENER_NAME=CLIENT
|
|
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=false
|
|
- KAFKA_CFG_DELETE_TOPICS_ENABLE=true
|
|
|
|
kafdrop:
|
|
profiles:
|
|
- kafka
|
|
image: docker.io/obsidiandynamics/kafdrop
|
|
ports:
|
|
- "8999:9000"
|
|
networks:
|
|
- demo
|
|
environment:
|
|
- "KAFKA_BROKERCONNECT=${DW_HOSTNAME}:9094"
|
|
# This mapping is required to enable kafdrop to communicate with
|
|
# the external, host-bound port for kafka
|
|
extra_hosts:
|
|
- "${DW_HOSTNAME}:${DW_HOST_IP}"
|
|
- "${DW_HOST_FQDN}:${DW_HOST_IP}"
|
|
depends_on:
|
|
kafka:
|
|
condition: service_started
|
|
|
|
configuration:
|
|
entrypoint: [ "java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5009","-jar","app.jar" ]
|
|
image: nationalsecurityagency/datawave/config-service:${VERSION:-latest}
|
|
command:
|
|
- --spring.output.ansi.enabled=ALWAYS
|
|
- --spring.profiles.active=consul,native,open_actuator
|
|
- --spring.cloud.consul.host=consul
|
|
- --spring.cloud.config.server.native.searchLocations=file:///microservice-config
|
|
environment:
|
|
- 'KEYSTORE_LOCATION=file:///etc/pki/testServer.p12'
|
|
- KEYSTORE_PASSWORD=ChangeIt
|
|
- KEY_ALIAS=certificate
|
|
ports:
|
|
- "8888:8888"
|
|
- "5009:5009"
|
|
volumes:
|
|
- ${CONFIG_DIR:-./config}:/microservice-config:ro
|
|
- ${PKI_DIR:-./pki}:/etc/pki:ro
|
|
- ./logs:/logs
|
|
networks:
|
|
- demo
|
|
healthcheck:
|
|
test: curl -f http://localhost:8888/configserver/mgmt/health
|
|
interval: 10s
|
|
timeout: 1s
|
|
start_period: 45s
|
|
retries: 3
|
|
depends_on:
|
|
rabbitmq:
|
|
condition: service_started
|
|
|
|
cache:
|
|
image: nationalsecurityagency/datawave/hazelcast-service:${VERSION:-latest}
|
|
scale: 1
|
|
command:
|
|
- --spring.profiles.active=consul,compose,remoteauth
|
|
- --spring.output.ansi.enabled=ALWAYS
|
|
- --spring.cloud.consul.host=consul
|
|
- --spring.cloud.consul.discovery.instance-id=$${spring.application.name}:$${random.value}
|
|
ports:
|
|
- "5701-5703"
|
|
- "8080"
|
|
- "8843:8443"
|
|
volumes:
|
|
- ${PKI_DIR:-./pki}:/etc/pki:ro
|
|
- ./logs:/logs
|
|
networks:
|
|
- demo
|
|
healthcheck:
|
|
test: curl -f http://localhost:8080/cache/mgmt/health
|
|
interval: 10s
|
|
timeout: 1s
|
|
start_period: 45s
|
|
retries: 3
|
|
depends_on:
|
|
configuration:
|
|
condition: service_healthy
|
|
|
|
annotation-cache:
|
|
profiles:
|
|
- annotation-cache
|
|
image: nationalsecurityagency/datawave/annotation-cache-service:${VERSION:-latest}
|
|
scale: 2
|
|
command:
|
|
- --spring.profiles.active=consul,compose
|
|
- --spring.output.ansi.enabled=ALWAYS
|
|
- --spring.cloud.consul.host=consul
|
|
- --spring.cloud.consul.discovery.instance-id=$${spring.application.name}:$${random.value}
|
|
ports:
|
|
- "5701"
|
|
- "8080"
|
|
volumes:
|
|
- ${PKI_DIR:-./pki}:/etc/pki:ro
|
|
- ./logs:/logs
|
|
networks:
|
|
- demo
|
|
healthcheck:
|
|
test: curl -f http://localhost:8080/annotation-cache/mgmt/health
|
|
interval: 10s
|
|
timeout: 1s
|
|
start_period: 45s
|
|
retries: 3
|
|
depends_on:
|
|
configuration:
|
|
condition: service_healthy
|
|
rabbitmq:
|
|
condition: service_healthy
|
|
|
|
annotation:
|
|
entrypoint: [ "java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5959","-jar","app.jar" ]
|
|
profiles:
|
|
- annotation
|
|
image: nationalsecurityagency/datawave/annotation-service:1.0.0-SNAPSHOT
|
|
scale: 1
|
|
command:
|
|
- --spring.profiles.active=combined,consul,compose,remoteauth,log-disabled
|
|
- --spring.output.ansi.enabled=NEVER
|
|
- --spring.cloud.consul.host=consul
|
|
- --spring.cloud.consul.discovery.instance-id=$${spring.application.name}:$${random.value}
|
|
environment:
|
|
- ZOOKEEPER_HOST=${DW_ZOOKEEPER_HOST}
|
|
- "BACKEND=${BACKEND:-rabbitmq}"
|
|
ports:
|
|
- "5959:5959"
|
|
- "8748:8748"
|
|
- "8080"
|
|
- "9543:8443"
|
|
volumes:
|
|
- ${PKI_DIR:-./pki}:/etc/pki:ro
|
|
- ./logs:/logs
|
|
networks:
|
|
- demo
|
|
healthcheck:
|
|
test: curl -f http://localhost:8080/annotation/mgmt/health
|
|
interval: 10s
|
|
timeout: 1s
|
|
start_period: 45s
|
|
retries: 3
|
|
depends_on:
|
|
configuration:
|
|
condition: service_healthy
|
|
|
|
query-cache:
|
|
profiles:
|
|
- querycache
|
|
# To enable an additional Hazelcast cluster, enable the "querycache" profile
|
|
# Set an environment variable: QUERY_CACHE=query-cache. This will force the query and executor service to use a separate "query-cache" Hazelcast cluster.
|
|
image: nationalsecurityagency/datawave/hazelcast-service:${VERSION:-latest}
|
|
scale: 1
|
|
command:
|
|
- --spring.application.name=query-cache
|
|
- --hazelcast.client.cluster-members
|
|
- --spring.profiles.active=consul,compose,remoteauth
|
|
- --spring.output.ansi.enabled=ALWAYS
|
|
- --spring.cloud.consul.host=consul
|
|
- --spring.cloud.consul.discovery.instance-id=$${spring.application.name}:$${random.value}
|
|
ports:
|
|
- "5701-5703"
|
|
- "8080"
|
|
- "8844:8443"
|
|
volumes:
|
|
- ${PKI_DIR:-./pki}:/etc/pki:ro
|
|
- ./logs:/logs
|
|
networks:
|
|
- demo
|
|
healthcheck:
|
|
test: curl -f http://localhost:8080/query-cache/mgmt/health
|
|
interval: 10s
|
|
timeout: 1s
|
|
start_period: 45s
|
|
retries: 3
|
|
depends_on:
|
|
configuration:
|
|
condition: service_started
|
|
|
|
query-rabbitmq:
|
|
profiles:
|
|
- queryrabbit
|
|
# To enable an additional rabbit cluster, enable the "queryrabbit" profile
|
|
# Set an environment variable: USE_DEDICATED_INSTANCE=true. This will force the query and executor service to use a separate "query-rabbitmq" rabbit cluster.
|
|
image: docker.io/rabbitmq:3.12.4
|
|
volumes:
|
|
- ${RABBITMQ_CONFIG_DIR:-./rabbitmq-query-config}:/etc/rabbitmq
|
|
- ./logs:/logs
|
|
environment:
|
|
- TCP_PORTS=15672,5672
|
|
- RABBITMQ_ERLANG_COOKIE="someothercookie"
|
|
ports:
|
|
- "15673:15672"
|
|
networks:
|
|
- demo
|
|
depends_on:
|
|
consul:
|
|
condition: service_started
|
|
|
|
# When auto.create.topics.enable is true, this causes deleted topics to be recreated at random. So, leave it disabled.
|
|
query-kafka:
|
|
profiles:
|
|
- querykafka
|
|
# To enable an additional rabbit cluster, enable the "querykafka" profile
|
|
# Set an environment variable: USE_DEDICATED_INSTANCE=true. This will force the query and executor service to use a separate "query-kafka" kafka cluster.
|
|
image: docker.io/bitnami/kafka:3.2
|
|
ports:
|
|
- "9095:9095"
|
|
networks:
|
|
- demo
|
|
environment:
|
|
- KAFKA_CFG_NODE_ID=1
|
|
- KAFKA_CFG_PROCESS_ROLES=controller,broker
|
|
- ALLOW_PLAINTEXT_LISTENER=yes
|
|
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT
|
|
- KAFKA_CFG_LISTENERS=CLIENT://:9092,CONTROLLER://:9093,EXTERNAL://:9095
|
|
- KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://query-kafka:9092,EXTERNAL://${DW_HOSTNAME}:9095
|
|
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@query-kafka:9093
|
|
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
|
|
- KAFKA_INTER_BROKER_LISTENER_NAME=CLIENT
|
|
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=false
|
|
- KAFKA_CFG_DELETE_TOPICS_ENABLE=true
|
|
|
|
authorization:
|
|
entrypoint: [ "java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5008","-jar","app.jar" ]
|
|
image: nationalsecurityagency/datawave/authorization-service:${VERSION:-latest}
|
|
command:
|
|
- --spring.output.ansi.enabled=ALWAYS
|
|
- --spring.profiles.active=consul,mock,compose,federation
|
|
- --spring.cloud.consul.host=consul
|
|
- --spring.cloud.consul.discovery.instance-id=$${spring.application.name}:$${random.value}
|
|
ports:
|
|
- "8080"
|
|
- "8343:8443"
|
|
- "5008:5008"
|
|
volumes:
|
|
- ${PKI_DIR:-./pki}:/etc/pki:ro
|
|
- ./logs:/logs
|
|
networks:
|
|
- demo
|
|
healthcheck:
|
|
test: curl -f http://localhost:8080/authorization/mgmt/health
|
|
interval: 10s
|
|
timeout: 1s
|
|
start_period: 20s
|
|
retries: 3
|
|
depends_on:
|
|
cache:
|
|
condition: service_healthy
|
|
|
|
accumulo:
|
|
profiles:
|
|
- accumulo
|
|
- full
|
|
image: nationalsecurityagency/datawave/accumulo-service:${VERSION:-latest}
|
|
command:
|
|
- --spring.output.ansi.enabled=ALWAYS
|
|
- --spring.profiles.active=consul,compose,remoteauth
|
|
- --spring.cloud.consul.host=consul
|
|
- --spring.cloud.consul.discovery.instance-id=$${spring.application.name}:$${random.value}
|
|
environment:
|
|
- AUDIT_SERVER_URL=http://audit:8080/audit
|
|
- ZOOKEEPER_HOST=${DW_ZOOKEEPER_HOST}
|
|
# This mapping is required to enable the metrics service to communicate
|
|
# with host-deployed services like hadoop, zookeeper, and accumulo.
|
|
# These values are set locally in .env via bootstrap.sh
|
|
extra_hosts:
|
|
- "${DW_HOSTNAME}:${DW_HOST_IP}"
|
|
- "${DW_HOST_FQDN}:${DW_HOST_IP}"
|
|
ports:
|
|
- "9143:8443"
|
|
volumes:
|
|
- ${PKI_DIR:-./pki}:/etc/pki:ro
|
|
- ./logs:/logs
|
|
networks:
|
|
- demo
|
|
healthcheck:
|
|
test: curl -f http://localhost:8080/accumulo/mgmt/health
|
|
interval: 10s
|
|
timeout: 1s
|
|
start_period: 45s
|
|
retries: 3
|
|
depends_on:
|
|
authorization:
|
|
condition: service_healthy
|
|
|
|
audit:
|
|
image: nationalsecurityagency/datawave/audit-service:${VERSION:-latest}
|
|
command:
|
|
- --spring.output.ansi.enabled=ALWAYS
|
|
- --spring.profiles.active=consul,compose,remoteauth
|
|
- --spring.cloud.consul.host=consul
|
|
- --spring.cloud.consul.discovery.instance-id=$${spring.application.name}:$${random.value}
|
|
environment:
|
|
- ZOOKEEPER_HOST=${DW_ZOOKEEPER_HOST}
|
|
# This mapping is required to enable the audit service to communicate
|
|
# with host-deployed services like hadoop, zookeeper, and accumulo.
|
|
# These values are set locally in .env via bootstrap.sh
|
|
extra_hosts:
|
|
- "${DW_HOSTNAME}:${DW_HOST_IP}"
|
|
- "${DW_HOST_FQDN}:${DW_HOST_IP}"
|
|
ports:
|
|
- "8080"
|
|
- "9043:8443"
|
|
volumes:
|
|
- ${PKI_DIR:-./pki}:/etc/pki:ro
|
|
- ./logs:/logs
|
|
networks:
|
|
- demo
|
|
healthcheck:
|
|
test: curl -f http://localhost:8080/audit/mgmt/health
|
|
interval: 10s
|
|
timeout: 1s
|
|
start_period: 30s
|
|
retries: 3
|
|
depends_on:
|
|
authorization:
|
|
condition: service_healthy
|
|
|
|
metrics:
|
|
entrypoint: ["java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5007","-jar","app.jar"]
|
|
image: nationalsecurityagency/datawave/query-metric-service
|
|
command:
|
|
- --spring.output.ansi.enabled=ALWAYS
|
|
- --spring.profiles.active=consul,compose,remoteauth
|
|
- --spring.cloud.consul.host=consul
|
|
- --spring.cloud.consul.discovery.instance-id=$${spring.application.name}:$${random.value}
|
|
environment:
|
|
- ZOOKEEPER_HOST=${DW_ZOOKEEPER_HOST}
|
|
# This mapping is required to enable the metrics service to communicate
|
|
# with host-deployed services like hadoop, zookeeper, and accumulo.
|
|
# These values are set locally in .env via bootstrap.sh
|
|
extra_hosts:
|
|
- "${DW_HOSTNAME}:${DW_HOST_IP}"
|
|
- "${DW_HOST_FQDN}:${DW_HOST_IP}"
|
|
ports:
|
|
- "8180:8080"
|
|
- "8543:8443"
|
|
- "5007:5007"
|
|
volumes:
|
|
- ${PKI_DIR:-./pki}:/etc/pki:ro
|
|
- ./logs:/logs
|
|
networks:
|
|
- demo
|
|
healthcheck:
|
|
test: curl -f http://localhost:8080/querymetric/mgmt/health
|
|
interval: 5s
|
|
timeout: 1s
|
|
start_period: 40s
|
|
retries: 10
|
|
depends_on:
|
|
authorization:
|
|
condition: service_healthy
|
|
ingest:
|
|
condition: service_healthy
|
|
|
|
dictionary:
|
|
profiles:
|
|
- dictionary
|
|
- full
|
|
image: nationalsecurityagency/datawave/dictionary-service
|
|
command:
|
|
- --spring.output.ansi.enabled=ALWAYS
|
|
- --spring.profiles.active=consul,compose,remoteauth
|
|
- --spring.cloud.consul.host=consul
|
|
- --spring.cloud.consul.discovery.instance-id=$${spring.application.name}:$${random.value}
|
|
environment:
|
|
- ZOOKEEPER_HOST=${DW_ZOOKEEPER_HOST}
|
|
# This mapping is required to enable the metrics service to communicate
|
|
# with host-deployed services like hadoop, zookeeper, and accumulo.
|
|
# These values are set locally in .env via bootstrap.sh
|
|
extra_hosts:
|
|
- "${DW_HOSTNAME}:${DW_HOST_IP}"
|
|
- "${DW_HOST_FQDN}:${DW_HOST_IP}"
|
|
ports:
|
|
- "8280:8080"
|
|
- "8643:8443"
|
|
volumes:
|
|
- ${PKI_DIR:-./pki}:/etc/pki:ro
|
|
- ./logs:/logs
|
|
networks:
|
|
- demo
|
|
healthcheck:
|
|
test: curl -f http://localhost:8080/dictionary/mgmt/health
|
|
depends_on:
|
|
authorization:
|
|
condition: service_healthy
|
|
|
|
file-provider:
|
|
profiles:
|
|
- file-provider
|
|
- full
|
|
image: nationalsecurityagency/datawave/file-provider-service
|
|
command:
|
|
- --spring.output.ansi.enabled=ALWAYS
|
|
- --spring.profiles.active=consul,compose,remoteauth
|
|
- --spring.cloud.consul.host=consul
|
|
- --spring.cloud.consul.discovery.instance-id=$${spring.application.name}:$${random.value}
|
|
ports:
|
|
- "8580:8080"
|
|
- "8943:8443"
|
|
volumes:
|
|
- ${PKI_DIR:-./pki}:/etc/pki:ro
|
|
- ./logs:/logs
|
|
networks:
|
|
- demo
|
|
depends_on:
|
|
authorization:
|
|
condition: service_healthy
|
|
|
|
# If you want to test cached results, enable the cachedresults profile
|
|
mysql:
|
|
profiles:
|
|
- cachedresults
|
|
image: docker.io/mysql:8.0.32
|
|
environment:
|
|
- MYSQL_RANDOM_ROOT_PASSWORD=true
|
|
- MYSQL_DATABASE=cachedresults
|
|
- MYSQL_USER=datawave
|
|
- MYSQL_PASSWORD=secret
|
|
networks:
|
|
- demo
|
|
healthcheck:
|
|
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
|
|
timeout: 20s
|
|
retries: 10
|
|
|
|
# If you want to test cached results, set the CACHED_RESULTS environment variable to 'true'
|
|
query:
|
|
entrypoint: ["java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005","-jar","app.jar"]
|
|
image: nationalsecurityagency/datawave/query-service
|
|
command:
|
|
- --spring.output.ansi.enabled=ALWAYS
|
|
- --spring.profiles.active=consul,compose,remoteauth,querymessaging,metricssource,query,mrquery,cachedresults,federation
|
|
- --spring.cloud.consul.host=consul
|
|
- --spring.cloud.consul.discovery.instance-id=$${spring.application.name}:$${random.value}
|
|
environment:
|
|
- AUDIT_SERVER_URL=http://audit:8080/audit
|
|
- HADOOP_HOST=${DW_HADOOP_HOST}
|
|
- YARN_HOST=${DW_YARN_HOST}
|
|
- HADOOP_CONF_DIR=/etc/hadoop/conf
|
|
- "BACKEND=${BACKEND:-rabbitmq}"
|
|
- CACHED_RESULTS=${CACHED_RESULTS:-false}
|
|
- QUERY_CACHE=${QUERY_CACHE:-cache}
|
|
- USE_DEDICATED_INSTANCE=${USE_DEDICATED_INSTANCE:-false}
|
|
ports:
|
|
- "8080:8080"
|
|
- "8443:8443"
|
|
- "5005:5005"
|
|
volumes:
|
|
- ${PKI_DIR:-./pki}:/etc/pki:ro
|
|
- ./logs:/logs
|
|
- ${HADOOP_CONF_SOURCE:-./stack}:/etc/hadoop/conf:ro
|
|
networks:
|
|
- demo
|
|
healthcheck:
|
|
test: curl -f http://localhost:8080/query/mgmt/health
|
|
interval: 10s
|
|
timeout: 1s
|
|
start_period: 30s
|
|
retries: 3
|
|
depends_on:
|
|
audit:
|
|
condition: service_healthy
|
|
authorization:
|
|
condition: service_healthy
|
|
metrics:
|
|
condition: service_healthy
|
|
executor-pool1:
|
|
condition: service_started
|
|
|
|
mapreduce-query:
|
|
profiles:
|
|
- full
|
|
entrypoint: ["java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005","-jar","app.jar"]
|
|
image: nationalsecurityagency/datawave/mapreduce-query-service
|
|
command:
|
|
- --spring.output.ansi.enabled=ALWAYS
|
|
- --spring.profiles.active=consul,compose,remoteauth,query,mrquery,federation
|
|
- --spring.cloud.consul.host=consul
|
|
- --spring.cloud.consul.discovery.instance-id=$${spring.application.name}:$${random.value}
|
|
environment:
|
|
- ZOOKEEPER_HOST=${DW_ZOOKEEPER_HOST}
|
|
- HADOOP_HOST=${DW_HADOOP_HOST}
|
|
- YARN_HOST=${DW_YARN_HOST}
|
|
- HADOOP_CONF_DIR=/etc/hadoop/conf
|
|
ports:
|
|
- "50005:5005"
|
|
volumes:
|
|
- ${PKI_DIR:-./pki}:/etc/pki:ro
|
|
- ./logs:/logs
|
|
- ${HADOOP_CONF_SOURCE:-./stack}:/etc/hadoop/conf:ro
|
|
networks:
|
|
- demo
|
|
healthcheck:
|
|
test: curl -f http://localhost:8080/mrquery/mgmt/health
|
|
interval: 10s
|
|
timeout: 1s
|
|
start_period: 30s
|
|
retries: 3
|
|
depends_on:
|
|
audit:
|
|
condition: service_healthy
|
|
authorization:
|
|
condition: service_healthy
|
|
metrics:
|
|
condition: service_healthy
|
|
executor-pool1:
|
|
condition: service_started
|
|
|
|
executor-pool1:
|
|
entrypoint: ["java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5006","-jar","app.jar"]
|
|
image: nationalsecurityagency/datawave/query-executor-service
|
|
command:
|
|
- --spring.application.name=executor-pool1
|
|
- --spring.cloud.config.name=executor
|
|
- --spring.output.ansi.enabled=ALWAYS
|
|
- --spring.profiles.active=consul,compose,remoteauth,querymessaging,metricssource,query,pool1,federation
|
|
- --spring.cloud.consul.host=consul
|
|
- --spring.cloud.consul.discovery.instance-id=$${spring.application.name}:$${random.value}
|
|
environment:
|
|
- ZOOKEEPER_HOST=${DW_ZOOKEEPER_HOST}
|
|
- HADOOP_HOST=${DW_HADOOP_HOST}
|
|
- BACKEND=${BACKEND:-rabbitmq}
|
|
- HADOOP_CONF_DIR=/etc/hadoop/conf
|
|
- QUERY_CACHE=${QUERY_CACHE:-cache}
|
|
- USE_DEDICATED_INSTANCE=${USE_DEDICATED_INSTANCE:-false}
|
|
# This mapping is required to enable the metrics service to communicate
|
|
# with host-deployed services like hadoop, zookeeper, and accumulo.
|
|
# These values are set locally in .env via bootstrap.sh
|
|
extra_hosts:
|
|
- "${DW_HOSTNAME}:${DW_HOST_IP}"
|
|
- "${DW_HOST_FQDN}:${DW_HOST_IP}"
|
|
ports:
|
|
- "8380:8080"
|
|
- "8743:8443"
|
|
- "5006:5006"
|
|
volumes:
|
|
- ${PKI_DIR:-./pki}:/etc/pki:ro
|
|
- ./logs/pool1:/logs
|
|
- ${HADOOP_CONF_SOURCE:-./stack}:/etc/hadoop/conf:ro
|
|
networks:
|
|
- demo
|
|
healthcheck:
|
|
test: curl -f http://localhost:8080/executor/mgmt/health
|
|
interval: 10s
|
|
timeout: 1s
|
|
start_period: 30s
|
|
retries: 3
|
|
depends_on:
|
|
rabbitmq:
|
|
condition: service_started
|
|
authorization:
|
|
condition: service_healthy
|
|
metrics:
|
|
condition: service_healthy
|
|
|
|
executor-pool2:
|
|
profiles:
|
|
- pool2
|
|
- full
|
|
image: nationalsecurityagency/datawave/query-executor-service
|
|
command:
|
|
- --spring.application.name=executor-pool2
|
|
- --spring.cloud.config.name=executor
|
|
- --spring.output.ansi.enabled=ALWAYS
|
|
- --spring.profiles.active=consul,compose,remoteauth,querymessaging,metricssource,query,pool2,federation
|
|
- --spring.cloud.consul.host=consul
|
|
- --spring.cloud.consul.discovery.instance-id=$${spring.application.name}:$${random.value}
|
|
environment:
|
|
- ZOOKEEPER_HOST=${DW_ZOOKEEPER_HOST}
|
|
- HADOOP_HOST=${DW_HADOOP_HOST}
|
|
- BACKEND=${BACKEND:-rabbitmq}
|
|
- HADOOP_CONF_DIR=/etc/hadoop/conf
|
|
- QUERY_CACHE=${QUERY_CACHE:-cache}
|
|
- USE_DEDICATED_INSTANCE=${USE_DEDICATED_INSTANCE:-false}
|
|
# This mapping is required to enable the metrics service to communicate
|
|
# with host-deployed services like hadoop, zookeeper, and accumulo.
|
|
# These values are set locally in .env via bootstrap.sh
|
|
extra_hosts:
|
|
- "${DW_HOSTNAME}:${DW_HOST_IP}"
|
|
- "${DW_HOST_FQDN}:${DW_HOST_IP}"
|
|
ports:
|
|
- "8480:8080"
|
|
- "8243:8443"
|
|
volumes:
|
|
- ${PKI_DIR:-./pki}:/etc/pki:ro
|
|
- ./logs/pool2:/logs
|
|
- ${HADOOP_CONF_SOURCE:-./stack}:/etc/hadoop/conf:ro
|
|
networks:
|
|
- demo
|
|
healthcheck:
|
|
test: curl -f http://localhost:8080/executor/mgmt/health
|
|
interval: 10s
|
|
timeout: 1s
|
|
start_period: 30s
|
|
retries: 3
|
|
depends_on:
|
|
rabbitmq:
|
|
condition: service_started
|
|
authorization:
|
|
condition: service_healthy
|
|
metrics:
|
|
condition: service_healthy
|
|
|
|
modification:
|
|
entrypoint: ["java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5010","-jar","app.jar"]
|
|
profiles:
|
|
- modification
|
|
- full
|
|
image: nationalsecurityagency/datawave/modification-service
|
|
command:
|
|
- --spring.output.ansi.enabled=ALWAYS
|
|
- --spring.profiles.active=consul,compose,remoteauth,query
|
|
- --spring.cloud.consul.host=consul
|
|
- --spring.cloud.consul.discovery.instance-id=$${spring.application.name}:$${random.value}
|
|
environment:
|
|
- ZOOKEEPER_HOST=${DW_ZOOKEEPER_HOST}
|
|
# This mapping is required to enable the metrics service to communicate
|
|
# with host-deployed services like hadoop, zookeeper, and accumulo.
|
|
# These values are set locally in .env via bootstrap.sh
|
|
extra_hosts:
|
|
- "${DW_HOSTNAME}:${DW_HOST_IP}"
|
|
- "${DW_HOST_FQDN}:${DW_HOST_IP}"
|
|
ports:
|
|
- "8680:8080"
|
|
- "9343:8443"
|
|
- "5010:5010"
|
|
volumes:
|
|
- ${PKI_DIR:-./pki}:/etc/pki:ro
|
|
- ./logs:/logs
|
|
networks:
|
|
- demo
|
|
healthcheck:
|
|
test: curl -f http://localhost:8080/dictionary/mgmt/health
|
|
depends_on:
|
|
authorization:
|
|
condition: service_healthy
|
|
|
|
# If you use the management center, you can connect to the hazelcast cache as follows:
|
|
# In your browser connect to https://localhost:9243/
|
|
# Enable 'dev' mode
|
|
# Click 'Add Cluster Config'
|
|
# Enter the following for the cache service:
|
|
# - Cluster Name: cache
|
|
# - Cluster Config: Enabled
|
|
# - Member Addresses: cache
|
|
# Enter the following for the query metric service:
|
|
# - Cluster Name: metrics
|
|
# - Cluster Config: Enabled
|
|
# - Member Addresses: metrics
|
|
# Use the console to view the cache contents
|
|
# - Select the 'cache' cluster
|
|
# - Select 'Console' under the 'CLUSTER' navigation entry
|
|
# - Run the following commands to list all entries in the 'datawaveUsers' map:
|
|
# - ns datawaveUsers
|
|
# - m.entries
|
|
management-center:
|
|
profiles:
|
|
- management
|
|
- full
|
|
image: docker.io/hazelcast/management-center:5.1.2
|
|
environment:
|
|
- |-
|
|
JAVA_OPTS=
|
|
-Dhazelcast.mc.healthCheck.enable=true
|
|
-Dhazelcast.mc.tls.enabled=true
|
|
-Dhazelcast.mc.tls.keyStore=/etc/pki/testServer.p12
|
|
-Dhazelcast.mc.tls.keyStorePassword=ChangeIt
|
|
-Dhazelcast.mc.tls.trustStore=/etc/pki/testCA.p12
|
|
-Dhazelcast.mc.tls.trustStorePassword=ChangeIt
|
|
ports:
|
|
- "8081"
|
|
- "9243:8443"
|
|
volumes:
|
|
- ${PKI_DIR:-./pki}:/etc/pki:ro
|
|
networks:
|
|
- demo
|
|
healthcheck:
|
|
test: wget -q http://localhost:8081/health -O /dev/null || exit 1
|
|
depends_on:
|
|
cache:
|
|
condition: service_healthy
|
|
|
|
networks:
|
|
demo:
|