name: ndc-mission-core-telemetry x-ndc-labels: &ndc-labels com.nodedc.product: mission-core com.nodedc.stack: ndc-mission-core-telemetry com.nodedc.managed-by: docker-compose services: broker: image: eclipse-mosquitto:2.1.2-alpine container_name: ndc-mission-core-mqtt-broker restart: unless-stopped labels: <<: *ndc-labels com.nodedc.role: mqtt-broker ports: - "${MISSIONCORE_MQTT_BIND_ADDRESS:-127.0.0.1}:${MISSIONCORE_MQTT_PORT:-1883}:1883" environment: MISSIONCORE_MQTT_HEALTH_USER: "${MISSIONCORE_MQTT_INGEST_USER}" MISSIONCORE_MQTT_HEALTH_PASSWORD: "${MISSIONCORE_MQTT_INGEST_PASSWORD}" volumes: - ./mosquitto/mosquitto.conf:/mosquitto/config/mosquitto.conf:ro - ./runtime/mosquitto/passwords:/mosquitto/config/passwords:ro - ./runtime/mosquitto/acl:/mosquitto/config/acl:ro - broker-data:/mosquitto/data healthcheck: test: - CMD-SHELL - >- mosquitto_sub -h 127.0.0.1 -t '$$SYS/broker/uptime' -C 1 -W 3 -u "$$MISSIONCORE_MQTT_HEALTH_USER" -P "$$MISSIONCORE_MQTT_HEALTH_PASSWORD" interval: 10s timeout: 4s retries: 6 timescale: image: timescale/timescaledb-ha:pg16.14-ts2.28.2-all-oss container_name: ndc-mission-core-telemetry-timescaledb restart: unless-stopped labels: <<: *ndc-labels com.nodedc.role: telemetry-database environment: POSTGRES_DB: "${MISSIONCORE_DB_NAME}" POSTGRES_USER: "${MISSIONCORE_DB_USER}" POSTGRES_PASSWORD: "${MISSIONCORE_DB_PASSWORD}" volumes: - timescale-data:/home/postgres/pgdata/data - ./timescale/001_telemetry.sql:/docker-entrypoint-initdb.d/001_telemetry.sql:ro healthcheck: test: ["CMD-SHELL", "pg_isready -U ${MISSIONCORE_DB_USER} -d ${MISSIONCORE_DB_NAME}"] interval: 10s timeout: 5s retries: 10 normalizer: image: nodedc/mission-core-telemetry-normalizer:local container_name: ndc-mission-core-telemetry-normalizer build: context: ../.. dockerfile: deploy/telemetry-plane/normalizer/Dockerfile restart: unless-stopped labels: <<: *ndc-labels com.nodedc.role: telemetry-normalizer depends_on: broker: condition: service_healthy timescale: condition: service_healthy ports: - "127.0.0.1:${MISSIONCORE_TELEMETRY_QUERY_PORT:-18030}:18030" environment: MISSIONCORE_MQTT_HOST: broker MISSIONCORE_MQTT_PORT: "1883" MISSIONCORE_MQTT_USERNAME: "${MISSIONCORE_MQTT_INGEST_USER}" MISSIONCORE_MQTT_PASSWORD: "${MISSIONCORE_MQTT_INGEST_PASSWORD}" MISSIONCORE_DATABASE_DSN: >- postgresql://${MISSIONCORE_DB_USER}:${MISSIONCORE_DB_PASSWORD}@timescale:5432/${MISSIONCORE_DB_NAME} MISSIONCORE_QUERY_HOST: "0.0.0.0" MISSIONCORE_QUERY_PORT: "18030" healthcheck: test: - CMD - python - -c - >- import urllib.request; urllib.request.urlopen('http://127.0.0.1:18030/health', timeout=3).read() interval: 10s timeout: 4s retries: 6 volumes: broker-data: name: ndc-mission-core-mqtt-data labels: <<: *ndc-labels com.nodedc.role: mqtt-storage timescale-data: name: ndc-mission-core-telemetry-timescale-data labels: <<: *ndc-labels com.nodedc.role: telemetry-storage networks: default: name: ndc-mission-core-telemetry labels: <<: *ndc-labels com.nodedc.role: telemetry-network