services: postgres: image: postgres:latest hostname: postgres container_name: postgres networks: - cluster restart: always ports: - "5432:5432" environment: POSTGRES_USER: $DATABASE_USERNAME POSTGRES_PASSWORD: $DATABASE_PASSWORD POSTGRES_DB: $DATABASE_NAME kafka: image: confluentinc/cp-kafka:latest hostname: kafka container_name: kafka networks: - cluster restart: always ports: - "9092:9092" - "9997:9997" environment: KAFKA_BROKER_ID: 1 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT,PLAINTEXT_INTERNAL:PLAINTEXT KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092,CONTROLLER://kafka:9093,PLAINTEXT_INTERNAL://kafka:29092 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092,PLAINTEXT_INTERNAL://kafka:29092 KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0 KAFKA_NODE_ID: 1 KAFKA_PROCESS_ROLES: broker,controller KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka:9093 KAFKA_LOG_DIRS: /var/lib/kafka/data CLUSTER_ID: MkU3OEVBNTcwNTJENDM2Qk KAFKA_JMX_PORT: 9997 KAFKA_JMX_ENABLED: "true" schema-registry: image: confluentinc/cp-schema-registry:latest container_name: schema-registry hostname: schema-registry networks: - cluster restart: always ports: - '8085:8085' environment: SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: kafka:29092 SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: PLAINTEXT SCHEMA_REGISTRY_HOST_NAME: schema-registry SCHEMA_REGISTRY_LISTENERS: http://schema-registry:8085 SCHEMA_REGISTRY_SCHEMA_REGISTRY_INTER_INSTANCE_PROTOCOL: "http" SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: INFO SCHEMA_REGISTRY_KAFKASTORE_TOPIC: _schemas kafbat-ui: image: ghcr.io/kafbat/kafka-ui:latest container_name: kafbat-ui hostname: kafbat-ui restart: on-failure networks: - cluster ports: - "8888:8080" environment: KAFKA_CLUSTERS_0_NAME: "local" KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092 KAFKA_CLUSTERS_0_METRICS_PORT: 9997 KAFKA_CLUSTERS_0_SCHEMAREGISTRY: http://schema-registry:8085 DYNAMIC_CONFIG_ENABLED: 'true' grafana: image: grafana/otel-lgtm:latest container_name: grafana hostname: grafana restart: always networks: - cluster ports: - "4317:4317" - "4318:4318" - "3000:3000" shortener-service: container_name: shortener-service hostname: shortener-service build: . ports: - "8080:8080" profiles: - shortener env_file: - local.env environment: SPRING_PROFILES_ACTIVE: "monitoring" SPRING_DATASOURCE_URL: "jdbc:postgresql://postgres:5432/$DATABASE_NAME" SPRING_DATASOURCE_USERNAME: "$DATABASE_USERNAME" SPRING_DATASOURCE_PASSWORD: "$DATABASE_PASSWORD" SPRING_KAFKA_BOOTSTRAP_SERVERS: "kafka:29092" SPRING_KAFKA_CONSUMER_PROPERTIES_SCHEMA_REGISTRY_URL: "http://schema-registry:8085" SPRING_KAFKA_PRODUCER_PROPERTIES_SCHEMA_REGISTRY_URL: "http://schema-registry:8085" SPRING_FLYWAY_URL: "jdbc:postgresql://postgres:5432/$DATABASE_NAME" SPRING_FLYWAY_USER: "$DATABASE_USERNAME" SPRING_FLYWAY_PASSWORD: "$DATABASE_PASSWORD" OTEL_EXPORTER_OTLP_ENDPOINT: "http://grafana:4317" networks: - cluster networks: cluster: driver: bridge