docker-compose.base.yaml
Rama main · réplica de lectura del repositorio original.
services:
kafka:
image: confluentinc/cp-kafka:8.0.3@sha256:db5eac24a1d15a1689fa89642ef97a7e3bc4f55ad5159a07b213c4dc7d0114e3
environment:
CLUSTER_ID: ca497efe-9f82-4b84-890b-d9969a9a2e1c
KAFKA_BROKER_ID: 0
KAFKA_PROCESS_ROLES: "broker,controller"
KAFKA_CONTROLLER_QUORUM_VOTERS: "0@kafka:9093"
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT,CONTROLLER:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka:9092,EXTERNAL://localhost:29092
KAFKA_LISTENERS: INTERNAL://kafka:9092,EXTERNAL://0.0.0.0:29092,CONTROLLER://kafka:9093
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false"
# Message timestamp validation
# See:
# * https://cwiki.apache.org/confluence/display/KAFKA/KIP-937%3A+Improve+Message+Timestamp+Validation
# * https://kafka.apache.org/41/configuration/broker-configs/#brokerconfigs_log.message.timestamp.before.max.ms
# * https://kafka.apache.org/41/configuration/broker-configs/#brokerconfigs_log.message.timestamp.after.max.ms
KAFKA_LOG_MESSAGE_TIMESTAMP_AFTER_MAX_MS: 9223372036854775807
JMX_PORT: 9997
KAFKA_JMX_OPTS: "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka -Dcom.sun.management.jmxremote.rmi.port=9997"
healthcheck:
test:
[
"CMD-SHELL",
"JMX_PORT=9998",
"kafka-topics",
"--bootstrap-server",
"kafka:9092",
"--list",
]
interval: 5s
timeout: 3s
retries: 30
clickhouse:
image: clickhouse/clickhouse-server:25.12.3-alpine@sha256:74da41cd61db84f652c6364fd30d59e19b7276d34f7c82515f5f0e70d6f325da
environment:
CLICKHOUSE_USER: default
CLICKHOUSE_PASSWORD: default
CLICKHOUSE_DB: openmeter
CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: 1
ulimits:
nofile:
soft: 262144
hard: 262144
healthcheck:
test: ["CMD", "wget", "--spider", "http://clickhouse:8123/ping"]
interval: 5s
timeout: 3s
retries: 30
ch-ui:
image: ghcr.io/caioricciuti/ch-ui:1.6.4@sha256:556926565654c7d7177f4b92788f5b42a98b14f3652815b1d94db4711dc48f5b
profiles:
- dev
depends_on:
- clickhouse
restart: always
environment:
VITE_CLICKHOUSE_URL: http://localhost:8123
VITE_CLICKHOUSE_USER: default
VITE_CLICKHOUSE_PASS: default
# Deduplication
# docker compose --profile redis up
redis:
image: redis:7.4.7@sha256:c6e4a82ce60b829a72a21cc4ad4c1c274fa6962eb0d6ac698e8157cbc3fe16a4
command:
[
"redis-server",
"--maxmemory",
"50mb",
"--maxmemory-policy",
"noeviction",
"--maxmemory-samples",
"10",
]
healthcheck:
test: ["CMD-SHELL", "redis-cli ping | grep PONG"]
interval: 5s
timeout: 3s
retries: 30
# Development
# docker compose --profile dev up
kafka-ui:
image: ghcr.io/kafbat/kafka-ui:328aedb
depends_on:
- kafka
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9092
KAFKA_CLUSTERS_0_METRICS_PORT: 9997
DYNAMIC_CONFIG_ENABLED: "true"
healthcheck:
test: ["CMD", "wget", "--spider", "http://kafka-ui:8080/"]
interval: 10s
timeout: 5s
retries: 30
# Credit
# docker compose --profile postgres up
postgres:
image: postgres:14.20-alpine3.23@sha256:14f02666642586a64d6fae8ef42d479fd76456a77c73ae8a626b8fe323b76d22
environment:
- POSTGRES_USER=postgres
- POSTGRES_DB=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_HOST_AUTH_METHOD=md5
configs:
- source: svix_sql
target: /docker-entrypoint-initdb.d/svix.sql
mode: 0444
command: ["postgres", "-c", "wal_level=logical"]
healthcheck:
test: ["CMD", "pg_isready", "-d", "postgres", "-U", "postgres"]
interval: 10s
timeout: 5s
retries: 30
svix:
image: svix/svix-server:v1.101@sha256:7ba594c766c882dea9c868cd38957755b1d5c8bc5020f81cf5521ba5ab5adc11
environment:
WAIT_FOR: "true" # We want to wait for the default services
SVIX_REDIS_DSN: "redis://redis:6379"
SVIX_DB_DSN: "postgresql://svix:svix@postgres/svix"
SVIX_CACHE_TYPE: "redis"
SVIX_JWT_SECRET: "DUMMY_JWT_SECRET"
SVIX_LOG_LEVEL: "info"
SVIX_QUEUE_TYPE: "redis"
depends_on:
- postgres
- redis
healthcheck:
test: [ "CMD", "svix-server", "healthcheck", "http://localhost:8071" ]
interval: 10s
timeout: 5s
retries: 30
configs:
svix_sql:
content: |
CREATE USER svix WITH PASSWORD 'svix';
CREATE DATABASE svix;
GRANT ALL PRIVILEGES ON DATABASE svix TO svix;
ALTER DATABASE svix OWNER TO svix;