Ich tracke schon seit einer Weile einige Gesundheitsdaten mit einer selbstgehosteten NocoDB Datenbank. Was bisher gefehlt hat, war die Visualisierung der Daten. Da kommt nun Metabase in’s Spiel. Dazu habe ich Metabase einfach in meinen NocoDB Stack integriert:
version: "2.1"
services:
nocodb:
image: nocodb/nocodb:${TAG:-latest}
container_name: ${SERVICE:-nocodb}-app
depends_on:
root_db:
condition: service_healthy
env_file: .env
ports:
- ${IP:-10.0.0.3}:${PORT:-4444}:8080
restart: always
volumes:
- ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/${SERVICE:-nocodb}/data:/usr/app/data
root_db:
image: mysql:${TAG_DB:-8.0.32}
container_name: ${SERVICE:-nocodb}-db
env_file: .env
ports:
- ${IP:-10.0.0.3}:${PORT_DB:-3336}:3306
healthcheck:
retries: 10
test:
- CMD
- mysqladmin
- ping
- "-h"
- localhost
timeout: 20s
restart: always
volumes:
- ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/${SERVICE:-nocodb}/database:/var/lib/mysql
metabase:
image: metabase/metabase:${TAG_METABASE:-latest}
container_name: ${SERVICE:-nocodb}-metabase
volumes:
- ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/${SERVICE:-nocodb}/metabase:/metabase
ports:
- ${IP:-10.0.0.3}:${PORT_METABASE:-3333}:3000
depends_on:
root_db:
condition: service_healthy
env_file: .env
volumes:
data: {}
database: {}
metabase: {}
Die Services in’s selbe Netzwerk packen:
networks:
default:
external: true
name: default
Das .env
File sieht dann so aus:
TZ=Europe/Berlin
MYSQL_DATABASE=root_db
MYSQL_PASSWORD=password
MYSQL_RANDOM_ROOT_PASSWORD=true
MYSQL_USER=noco
MB_DB_TYPE=mysql
MB_DB_DBNAME=${MYSQL_DATABASE:-root_db}
MB_DB_PORT=3306
MB_DB_USER=${MYSQL_USER:-noco}
MB_DB_PASS=${MYSQL_PASSWORD:-password}
MB_DB_HOST=${SERVICE:-nocodb}-db
NC_DB="mysql2://${MYSQL_DATABASE:-root_db}:${MB_DB_PORT:-3306}?u=${MYSQL_USER:-noco}&p=${MYSQL_PASSWORD:-password}&d=${MYSQL_DATABASE:-root_db}"
Dort muss man nur das MYSQL_PASSWORD
anpassen.
In Metabase dann die Verknüpfung zur Datenbank herstellen.

Und schon kann das freudige Visualisieren losgehen.


So lassen sich auf die Schnelle wunderschöne Dashboards zusammenklicken.