Files
datawave/docker/docker-compose.yml

1013 lines
32 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
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:
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=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: