Terbaru, saya sedang ada project untuk membuat IoT Stack. Stack ini terdiri dari mqtt broker yang menerima data dari sensor, kemudian ada nodered sebagai penghubung antara broker dengan database. Untuk database saya pakai influxdb. Dan, yang terakhir yaitu Grafana untuk menampilkan data yang sudah disimpan dalam database.
Berikut contoh docker composenya:
version: '3.9'
services:
mqtt:
image: eclipse-mosquitto
container_name: mqtt
user: "0"
ports:
- "1883:1883"
- "9001:9001"
volumes:
- ./mosquitto/config:/mosquitto/config
- ./mosquitto/data:/mosquitto/data
- ./mosquitto/log:/mosquitto/log
nodered:
image: nodered/node-red
container_name: nodered
user: "0"
ports:
- "1880:1880"
dns:
- "8.8.8.8"
- "1.1.1.1"
volumes:
- ./nodered/data:/data
influxdb:
image: influxdb:latest
container_name: influxdb
user: "0"
ports:
- "8086:8086"
volumes:
- ./influxdb/data/influxdb2:/var/lib/influxdb2
- ./influxdb/data/etc:/etc/influxdb2
environment:
- INFLUXDB_ADMIN_USER=admin
- INFLUXDB_ADMIN_PASSWORD=adminpassword
- INFLUXDB_DB=mydatabase
grafana:
image: grafana/grafana
container_name: grafana
user: "0"
ports:
- "3000:3000"
volumes:
- ./grafana/data:/var/lib/grafana
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=adminpassword
Docker compose diatas menggunakan persisten data yang disimpan dalam directory host-nya.
Pengalaman sebelumnya ada kendala soal persisten data untuk influxdb. Sehingga data yang tersimpan hilang saat container dibuat ulang atau dihapus, padahal settingan volume sudah diset dengan benar.
Ketika di-cek di portainer, ada volume yang di-create oleh container influxdb ini, jadi tidak memakai mount directory yang sudah disetting di docker compose.
Ada dua volume yang di-create oleh container. dari dua volume itu akhirnya saya buatkan directory mount nya. Saya coba-coba lagi docker compose down and up lagi dan lagi, akhirnya tidak ter-create volume lagi, dan berhasil mount directory host.