services: redpanda: image: redpandadata/redpanda:v25.3.9 command: - redpanda - start - --smp - '1' - --reserve-memory - 0M - --overprovisioned - --node-id - '1' - --kafka-addr - PLAINTEXT://0.0.0.0:29092,OUTSIDE://0.0.0.0:9092 - --advertise-kafka-addr - PLAINTEXT://redpanda:29092,OUTSIDE://localhost:9092 - --pandaproxy-addr - PLAINTEXT://0.0.0.0:28082,OUTSIDE://0.0.0.0:8082 - --advertise-pandaproxy-addr - PLAINTEXT://redpanda:28082,OUTSIDE://localhost:8082 - --rpc-addr - 0.0.0.0:33145 - --advertise-rpc-addr - redpanda:33145 ports: - 8082:8082 - 9092:9092 - 28082:28082 - 29092:29092 postgres: image: postgres:18 volumes: - postgres_data:/var/lib/postgresql restart: on-failure environment: - POSTGRES_DB=postgres - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres -d postgres"] interval: 10s timeout: 5s retries: 5 ports: - "5433:5432" jobmanager: build: context: . dockerfile: ./Dockerfile.flink image: pyflink pull_policy: never expose: - "6123" ports: - "8081:8081" volumes: - ./:/opt/flink/usrlib - ./data-streaming/:/opt/src - ./.google/credentials:/opt/creds:ro command: jobmanager environment: - GOOGLE_APPLICATION_CREDENTIALS=/opt/creds/google_credentials.json - GCS_DATA_LAKE_BUCKET=de-zoomcamp-493207-healthcare-lake - | FLINK_PROPERTIES= jobmanager.rpc.address: jobmanager jobmanager.memory.process.size: 1600m taskmanager: image: pyflink pull_policy: never expose: - "6121" - "6122" volumes: - ./:/opt/flink/usrlib - ./data-streaming/:/opt/src - ./.google/credentials:/opt/creds:ro depends_on: - jobmanager command: taskmanager --taskmanager.registration.timeout 5 min environment: - GOOGLE_APPLICATION_CREDENTIALS=/opt/creds/google_credentials.json - GCS_DATA_LAKE_BUCKET=de-zoomcamp-493207-healthcare-lake - | FLINK_PROPERTIES= jobmanager.rpc.address: jobmanager taskmanager.memory.process.size: 1728m taskmanager.numberOfTaskSlots: 15 parallelism.default: 3 volumes: postgres_data: driver: local