blob: 10b01c468968150e42219a341a2a24a8568cc2ff [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Service definitions for Druid's dependencies: ZooKeeper, MySQL, and Kafka.
# All tests need ZK and MySQL, ingestion tasks may need Kafka.
#
# These services use "official" images from the project or other sources.
# Some amount of fiddling is needed to map them into configuration which
# Druid requires.
services:
# Uses the official Zookeeper image
# See https://hub.docker.com/_/zookeeper
zookeeper:
# Uncomment the following when running on Apple Silicon processors:
# platform: linux/x86_64
image: zookeeper:${ZK_VERSION}
container_name: zookeeper
labels:
druid-int-test: "true"
networks:
druid-it-net:
ipv4_address: 172.172.172.4
ports:
- 2181:2181
volumes:
- ${SHARED_DIR}/logs:/logs
environment:
ZOO_LOG4J_PROP: INFO,ROLLINGFILE
# Uses the Bitnami Kafka image
# See https://hub.docker.com/r/bitnami/kafka/
kafka:
image: bitnami/kafka:${KAFKA_VERSION}
container_name: kafka
labels:
druid-int-test: "true"
ports:
- 9092:9092
- 9093:9093
networks:
druid-it-net:
ipv4_address: 172.172.172.2
volumes:
- ${SHARED_DIR}/kafka:/bitnami/kafka
environment:
# This is the default: making it explicit
KAFKA_CFG_ZOOKEEPER_CONNECT: zookeeper:2181
# Plaintext is disabled by default
ALLOW_PLAINTEXT_LISTENER: "yes"
# Adapted from base-setup.sh and Bitnami docs
KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: "INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT"
KAFKA_CFG_LISTENERS: "INTERNAL://:9092,EXTERNAL://:9093"
KAFKA_CFG_ADVERTISED_LISTENERS: "INTERNAL://kafka:9092,EXTERNAL://localhost:9093"
KAFKA_CFG_INTER_BROKER_LISTENER_NAME: INTERNAL
depends_on:
- zookeeper
# Uses the official MySQL image
# See https://hub.docker.com/_/mysql
# The image will intialize the user and DB upon first start.
metadata:
# Uncomment the following when running on Apple Silicon processors:
# platform: linux/x86_64
image: mysql:$MYSQL_IMAGE_VERSION
container_name: metadata
labels:
druid-int-test: "true"
restart: always
command:
- --character-set-server=utf8mb4
networks:
druid-it-net:
ipv4_address: 172.172.172.3
ports:
- 3306:3306
volumes:
- ${SHARED_DIR}/db/init.sql:/docker-entrypoint-initdb.d/init.sql
environment:
MYSQL_ROOT_PASSWORD: driud
MYSQL_DATABASE: druid
MYSQL_USER: druid
MYSQL_PASSWORD: diurd
minio:
container_name: minio
labels:
druid-int-test: "true"
command: server /data --console-address ":9001"
networks:
druid-it-net:
ipv4_address: 172.172.172.5
image: minio/minio:RELEASE.2023-05-27T05-56-19Z
ports:
- '9000:9000'
- '9001:9001'
volumes:
- ${SHARED_DIR}/minio:/data
environment:
- MINIO_ROOT_USER=${AWS_ACCESS_KEY_ID}
- MINIO_ROOT_PASSWORD=${AWS_SECRET_ACCESS_KEY}
create_minio_buckets:
image: minio/mc
networks:
druid-it-net:
ipv4_address: 172.172.172.6
entrypoint: >
/bin/sh -c "
/usr/bin/mc alias set s3 http://minio:9000 ${AWS_ACCESS_KEY_ID} ${AWS_SECRET_ACCESS_KEY};
/usr/bin/mc mb s3/${DRUID_CLOUD_BUCKET};
/usr/bin/mc anonymous set public s3/${DRUID_CLOUD_BUCKET};
"
## TODO: Not yet retested
### Optional supporting infra
openldap:
image: osixia/openldap:1.4.0
container_name: openldap
labels:
druid-int-test: "true"
networks:
druid-it-net:
ipv4_address: 172.172.172.102
ports:
- 8389:389
- 8636:636
privileged: true
volumes:
- ./ldap-configs:/container/service/slapd/assets/config/bootstrap/ldif/custom
command: --copy-service
schema-registry:
image: confluentinc/cp-schema-registry:5.5.1
container_name: schema-registry
labels:
druid-int-test: "true"
ports:
- 8085:8085
networks:
druid-it-net:
ipv4_address: 172.172.172.103
volumes:
- ./schema-registry/jaas_config.file:/usr/lib/druid/conf/jaas_config.file
- ./schema-registry/password-file:/usr/lib/druid/conf/password-file
privileged: true
environment:
SCHEMA_REGISTRY_HOST_NAME: schema-registry
SCHEMA_REGISTRY_LISTENERS: "http://0.0.0.0:8085"
SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: kafka:9092
SCHEMA_REGISTRY_AUTHENTICATION_METHOD: BASIC
SCHEMA_REGISTRY_AUTHENTICATION_REALM: druid
SCHEMA_REGISTRY_AUTHENTICATION_ROLES: users
SCHEMA_REGISTRY_OPTS: -Djava.security.auth.login.config=/usr/lib/druid/conf/jaas_config.file -Xmx32m
druid-it-hadoop:
## Giving fake version
image: druid-it/hadoop:9.9.9
container_name: druid-it-hadoop
labels:
druid-int-test: "true"
ports:
- 2049:2049
- 2122:2122
- 8020:8020
- 8021:8021
- 8030:8030
- 8031:8031
- 8032:8032
- 8033:8033
- 8040:8040
- 8042:8042
- 8088:8088
- 8443:8443
- 9000:9000
- 10020:10020
- 19888:19888
- 34455:34455
- 50010:50010
- 50020:50020
- 50030:50030
- 50060:50060
- 50070:50070
- 50075:50075
- 50090:50090
- 51111:51111
networks:
druid-it-net:
ipv4_address: 172.172.172.101
privileged: true
volumes:
- ${HOME}/shared:/shared
- ./../src/test/resources:/resources
hostname: "druid-it-hadoop"
command: "bash -c 'echo Start druid-it-hadoop container... && \
/etc/bootstrap.sh && \
tail -f /dev/null'"