🎉 Initial commit
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
services:
|
||||
timescaledb:
|
||||
image: timescale/timescaledb:2.17.2-pg16
|
||||
container_name: mqtt-timescaledb
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_USER: ${POSTGRES_USER:-ingester}
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme}
|
||||
POSTGRES_DB: ${POSTGRES_DB:-telemetry}
|
||||
ports:
|
||||
- "127.0.0.1:${POSTGRES_PORT:-5432}:5432"
|
||||
volumes:
|
||||
- timescale-data:/var/lib/postgresql/data
|
||||
- ./db/init:/docker-entrypoint-initdb.d:ro
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-ingester} -d ${POSTGRES_DB:-telemetry}"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
mqtt-client:
|
||||
build: ./mqtt-client
|
||||
container_name: mqtt-client
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
timescaledb:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
MQTT_BROKER_HOST: ${MQTT_BROKER_HOST}
|
||||
MQTT_BROKER_PORT: ${MQTT_BROKER_PORT:-8883}
|
||||
MQTT_TOPIC: ${MQTT_TOPIC:-sensors/#}
|
||||
MQTT_CLIENT_ID: ${MQTT_CLIENT_ID:-mqtt-ingester}
|
||||
MQTT_CA_CERT: /certs/ca.crt
|
||||
MQTT_CLIENT_CERT: /certs/client.crt
|
||||
MQTT_CLIENT_KEY: /certs/client.key
|
||||
MQTT_USERNAME: ${MQTT_USERNAME:-}
|
||||
MQTT_PASSWORD: ${MQTT_PASSWORD:-}
|
||||
MQTT_PSK_IDENTITY: ${MQTT_PSK_IDENTITY:-}
|
||||
MQTT_PSK_HEX: ${MQTT_PSK_HEX:-}
|
||||
DB_HOST: timescaledb
|
||||
DB_PORT: 5432
|
||||
DB_NAME: ${POSTGRES_DB:-telemetry}
|
||||
DB_USER: ${POSTGRES_USER:-ingester}
|
||||
DB_PASSWORD: ${POSTGRES_PASSWORD:-changeme}
|
||||
DB_BATCH_SIZE: ${DB_BATCH_SIZE:-500}
|
||||
DB_FLUSH_SECONDS: ${DB_FLUSH_SECONDS:-1.0}
|
||||
LOG_LEVEL: ${LOG_LEVEL:-INFO}
|
||||
LOG_TO_FILE: ${LOG_TO_FILE:-true}
|
||||
LOG_FILE_PATH: /var/log/mqtt-client/mqtt-client.log
|
||||
LOKI_URL: ${LOKI_URL:-}
|
||||
LOKI_USER: ${LOKI_USER:-}
|
||||
LOKI_PASSWORD: ${LOKI_PASSWORD:-}
|
||||
LOKI_FLUSH_SECONDS: ${LOKI_FLUSH_SECONDS:-5}
|
||||
LOKI_TIMEOUT_SECONDS: ${LOKI_TIMEOUT_SECONDS:-5}
|
||||
volumes:
|
||||
- ./certs:/certs:ro
|
||||
- mqtt-logs:/var/log/mqtt-client
|
||||
|
||||
api:
|
||||
build: ./api
|
||||
container_name: mqtt-api
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
timescaledb:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
DB_HOST: timescaledb
|
||||
DB_PORT: 5432
|
||||
DB_NAME: ${POSTGRES_DB:-telemetry}
|
||||
DB_USER: ${POSTGRES_USER:-ingester}
|
||||
DB_PASSWORD: ${POSTGRES_PASSWORD:-changeme}
|
||||
DB_POOL_MIN_SIZE: ${DB_POOL_MIN_SIZE:-2}
|
||||
DB_POOL_MAX_SIZE: ${DB_POOL_MAX_SIZE:-10}
|
||||
API_HOST: 0.0.0.0
|
||||
API_PORT: 8443
|
||||
API_CA_CERT: /certs/ca.crt
|
||||
API_SERVER_CERT: /certs/server.crt
|
||||
API_SERVER_KEY: /certs/server.key
|
||||
ports:
|
||||
- "${API_PORT:-8443}:8443"
|
||||
volumes:
|
||||
- ./certs:/certs:ro
|
||||
|
||||
loki:
|
||||
image: grafana/loki:3.4.2
|
||||
container_name: mqtt-loki
|
||||
restart: unless-stopped
|
||||
profiles: ["telemetry"]
|
||||
command: -config.file=/etc/loki/local-config.yaml
|
||||
ports:
|
||||
- "127.0.0.1:3100:3100"
|
||||
volumes:
|
||||
- loki-data:/loki
|
||||
|
||||
volumes:
|
||||
timescale-data:
|
||||
mqtt-logs:
|
||||
loki-data:
|
||||
Reference in New Issue
Block a user