Files
hlaeja-development/compose/development-compose.yml
2025-08-20 22:57:23 +02:00

145 lines
4.1 KiB
YAML

name: development
networks:
develop:
name: develop
external: true
volumes:
cassandra:
influx-config:
influx-data:
postgres:
redis:
kafka:
services:
influxdb:
image: influxdb:2.7.12-alpine
container_name: InfluxDB
restart: unless-stopped
environment:
DOCKER_INFLUXDB_INIT_MODE: setup
DOCKER_INFLUXDB_INIT_USERNAME: influx
DOCKER_INFLUXDB_INIT_PASSWORD: password
DOCKER_INFLUXDB_INIT_ADMIN_TOKEN: influxdbToken==
DOCKER_INFLUXDB_INIT_ORG: hlaeja_ltd
DOCKER_INFLUXDB_INIT_BUCKET: device-data
networks:
- develop
ports:
- 8086:8086
volumes:
- influx-data:/var/lib/influxdb2
- influx-config:/etc/influxdb2
postgres:
image: postgres:17.5-alpine
container_name: PostgreSQL
restart: unless-stopped
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD : password
ports:
- 5432:5432
networks:
- develop
volumes:
- postgres:/var/lib/postgresql/data
cassandra:
image: cassandra:5.0.4
container_name: Cassandra
restart: unless-stopped
environment:
CASSANDRA_USER: cassandra
CASSANDRA_PASSWORD: password
networks:
- develop
ports:
- 9042:9042
volumes:
- cassandra:/var/lib/cassandra
redis:
image: redis:8.0.3-alpine
container_name: Redis
restart: unless-stopped
environment:
REDIS_PASSWORD: password
networks:
- develop
ports:
- 6379:6379
volumes:
- redis:/data
kafka:
image: bitnami/kafka:latest
container_name: Kafka
restart: unless-stopped
ports:
- 9091:9091
environment:
# ---- KRaft single-node (broker + controller) ----
- KAFKA_ENABLE_KRAFT=yes
- KAFKA_CFG_PROCESS_ROLES=broker,controller
- KAFKA_CFG_NODE_ID=1
- KAFKA_KRAFT_CLUSTER_ID=Q1BGMDAwMDAwMDAwMDAwMA
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka:9093
# ---- Listeners ----
# Bind all, three names: INTERNAL (cluster+in-docker clients), EXTERNAL (host clients), CONTROLLER (KRaft)
- KAFKA_CFG_LISTENERS=INTERNAL://:9092,EXTERNAL://:9091,CONTROLLER://:9093
# How clients discover us:
- KAFKA_CFG_ADVERTISED_LISTENERS=INTERNAL://kafka:9092,EXTERNAL://localhost:9091
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,INTERNAL:SASL_PLAINTEXT,EXTERNAL:SASL_PLAINTEXT
- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=INTERNAL
# ---- SASL/PLAIN (no TLS) ----
# Enable PLAIN globally and for both listeners
- KAFKA_CFG_SASL_ENABLED_MECHANISMS=PLAIN
- KAFKA_CFG_SASL_MECHANISM_INTER_BROKER_PROTOCOL=PLAIN
- KAFKA_CFG_LISTENER_NAME_INTERNAL_SASL_ENABLED_MECHANISMS=PLAIN
- KAFKA_CFG_LISTENER_NAME_EXTERNAL_SASL_ENABLED_MECHANISMS=PLAIN
# Users (Bitnami helper vars wire JAAS for you)
- KAFKA_CLIENT_USERS=kafka
- KAFKA_CLIENT_PASSWORDS=password
- KAFKA_INTER_BROKER_USER=broker
- KAFKA_INTER_BROKER_PASSWORD=password
# Dev-friendly defaults
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
- KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=1
- KAFKA_CFG_TRANSACTION_STATE_LOG_REPLICATION_FACTOR=1
- KAFKA_CFG_TRANSACTION_STATE_LOG_MIN_ISR=1
- KAFKA_HEAP_OPTS=-Xms512m -Xmx512m
volumes:
- kafka:/bitnami/kafka
networks:
- develop
kafka-ui:
image: provectuslabs/kafka-ui:latest
container_name: KafkaUi
restart: unless-stopped
depends_on:
- kafka
ports:
- "9090:8080"
environment:
# Optional: allow adding clusters dynamically in UI
- DYNAMIC_CONFIG_ENABLED=true
# First cluster: local Docker Kafka
- KAFKA_CLUSTERS_0_NAME=local
- KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:9092
- KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOL=SASL_PLAINTEXT
- KAFKA_CLUSTERS_0_PROPERTIES_SASL_MECHANISM=PLAIN
- KAFKA_CLUSTERS_0_PROPERTIES_SASL_JAAS_CONFIG=org.apache.kafka.common.security.plain.PlainLoginModule required username="kafka" password="password";
networks:
- develop