Files
smart-city-digital-twin-mar…/pulsar/docker-compose.yml

104 lines
3.1 KiB
YAML

# Apache Pulsar Stack - Smart City Digital Twin Martinique
# Includes: Pulsar Standalone + Pulsar Manager
# Pulsar Admin: https://pulsar.digitribe.fr/admin
# Pulsar Manager: https://pulsar.digitribe.fr
version: '3.8'
services:
# Pulsar Standalone
pulsar:
image: apachepulsar/pulsar:3.2.0
container_name: smart-city-pulsar
restart: unless-stopped
user: "10000:0"
ports:
- "6650:6650"
environment:
PULSAR_MEM: "-Xms512m -Xmx512m -XX:MaxDirectMemorySize=512m"
PULSAR_STANDALONE_USE_ZOOKEEPER: "true"
volumes:
- pulsar-data:/pulsar/data
networks:
- traefik-public
- smartcity-shared
command: ["/pulsar/bin/pulsar", "standalone"]
# healthcheck désactivé car web service 8080 instable
# healthcheck:
# test: ["CMD-SHELL", "curl -sf http://localhost:8080/admin/v2/clusters || exit 1"]
# interval: 30s
# timeout: 10s
# retries: 10
# start_period: 60s
labels:
- "traefik.enable=true"
- "traefik.http.routers.pulsar-admin.rule=Host(`pulsar.digitribe.fr`) && PathPrefix(`/admin`, `/ws`, `/lookup`)"
- "traefik.http.routers.pulsar-admin.entrypoints=websecure"
- "traefik.http.routers.pulsar-admin.tls=true"
- "traefik.http.services.pulsar-admin.loadbalancer.server.port=8080"
# Pulsar Manager - Web UI
pulsar-manager:
image: apachepulsar/pulsar-manager:v0.4.0
container_name: smart-city-pulsar-manager
restart: unless-stopped
depends_on:
pulsar:
condition: service_healthy
environment:
- URL=jdbc:postgresql://127.0.0.1:5432/pulsar_manager
- POSTGRES_PASSWORD=Digitribe972
networks:
- traefik-public
- smartcity-shared
ports:
- "7750:7750"
healthcheck:
test: ["CMD-SHELL", "curl -sf http://localhost:7750 || exit 1"]
interval: 30s
timeout: 10s
retries: 5
start_period: 120s
labels:
- "traefik.enable=true"
- "traefik.http.routers.pulsar-manager.rule=Host(`pulsar.digitribe.fr`)"
- "traefik.http.routers.pulsar-manager.entrypoints=web"
- "traefik.http.services.pulsar-manager.loadbalancer.server.port=7750"
# Pulsar Distribution Service - Consumer → Republish to Brokers
pulsar-distribution:
build:
context: .
dockerfile: Dockerfile
container_name: smart-city-pulsar-distribution
restart: unless-stopped
depends_on:
- pulsar
environment:
- PULSAR_HOST=smart-city-pulsar
- PULSAR_PORT=6650
- EMQX_HOST=emqx_emqx_1
- EMQX_PORT=1883
- MOSQUITTO_HOST=mosquitto-traefik
- MOSQUITTO_PORT=1883
- ORION_URL=http://fiware-gis-quickstart-orion-1:1026
- STELLIO_URL=http://stellio-api-gateway:8080
- FROST_URL=http://frost-api-8090:8080/FROST-Server/v1.1
networks:
- smartcity-shared
healthcheck:
test: ["CMD-SHELL", "ps aux | grep -q distribution || exit 1"]
interval: 30s
timeout: 10s
retries: 5
start_period: 30s
networks:
traefik-public:
external: true
smartcity-shared:
external: true
volumes:
pulsar-data:
pulsar-manager-data: