Files
MSE-PI-E2EEDA-Plein-de-eeee…/db/docker-compose.yml
Klagarge 2b766d3d96 feat(db): add co2 watchdog on each room
Assisted-by: Junie:gemini-3-flash
Signed-off-by: Klagarge <remi@heredero.ch>
2026-06-04 14:46:35 +02:00

116 lines
3.2 KiB
YAML

services:
influxdb:
image: influxdb:3-core
ports:
- "${INFLUX_PORT}:8181"
entrypoint: |
/bin/sh -c '
RAW_TOKEN=$$(cat /run/secrets/admin-token) &&
echo "{\"name\":\"admin\",\"token\":\"$$RAW_TOKEN\"}" > /tmp/admin-token.json &&
exec influxdb3 serve \
--node-id=node0 \
--object-store=file \
--data-dir=/var/lib/influxdb3/data \
--admin-token-file=/tmp/admin-token.json \
--query-file-limit=1000 \
--disable-authz=health
'
secrets:
- admin-token
volumes:
- influxdb3_data:/var/lib/influxdb3
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8181/health"]
interval: 30s
timeout: 10s
retries: 5
explorer:
image: influxdata/influxdb3-ui
ports:
- "${UI_PORT}:80"
environment:
DEFAULT_INFLUX_SERVER: "http://influxdb:${INFLUX_PORT}"
DEFAULT_INFLUX_DATABASE: "provence"
DEFAULT_SERVER_NAME: "PI-E2EEDA"
depends_on:
influxdb:
condition: service_healthy
secrets:
- admin-token
entrypoint: >
/bin/sh -c '
export DEFAULT_API_TOKEN=$$(cat /run/secrets/admin-token) &&
exec ./entrypoint.sh'
restart: unless-stopped
init-influx:
image: influxdb:3-core
restart: "no"
depends_on:
influxdb:
condition: service_healthy
secrets:
- admin-token
entrypoint: |
/bin/sh -c '
influxdb3 create database \
--host "http://influxdb:$${INFLUX_PORT:-8181}" \
--token "$$(cat /run/secrets/admin-token)" \
provence || echo "Database provence already exists"
'
mqtt:
image: rabbitmq:4-management-alpine
container_name: mqtt
hostname: "mqtt"
restart: unless-stopped
ports:
- "15672:15672" # Management plugin HTTP port
- "1883:1883" # MQTT port
volumes:
- rabbitmq_data:/var/lib/rabbitmq
environment:
- RABBITMQ_DEFAULT_USER=${MQTT_USERNAME:?MQTT_USERNAME is required}
- RABBITMQ_DEFAULT_PASS=${MQTT_PASSWORD:?MQTT_PASSWORD is required}
command: sh -c "rabbitmq-plugins enable rabbitmq_mqtt && rabbitmq-server"
gateway:
build:
context: .
dockerfile: Dockerfile
depends_on:
influxdb:
condition: service_healthy
mqtt:
condition: service_started
environment:
- MQTT_BROKER_URL=${MQTT_BROKER_URL:-mqtt://mqtt:1883}
- MQTT_USERNAME=${MQTT_USERNAME:?MQTT_USERNAME is required}
- MQTT_PASSWORD=${MQTT_PASSWORD:?MQTT_PASSWORD is required}
- INFLUX_URL=${INFLUX_URL:-http://influxdb:${INFLUX_PORT:-8181}}
- INFLUX_DATABASE=${INFLUX_DATABASE}
- INFLUX_TOKEN_FILE=/run/secrets/admin-token
- REST_PORT=${REST_PORT:-8080}
- REST_USERNAME=${REST_USERNAME}
- REST_PASSWORD=${REST_PASSWORD}
- MAPPING_CONFIG_PATH=/config/mapping.json
- CO2_THREASHOLD_MAX=1400
- CO2_THREASHOLD_MIN=1000
secrets:
- admin-token
volumes:
- ./mapping.json:/config/mapping.json:ro
ports:
- "${REST_PORT:-8080}:8080"
restart: unless-stopped
volumes:
influxdb3_data:
rabbitmq_data:
secrets:
admin-token:
file: ./secrets/admin-token.txt