116 lines
3.2 KiB
YAML
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
|