Files
NODEDC_MISSION_CORE/deploy/telemetry-plane/compose.yaml
T

113 lines
3.5 KiB
YAML

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