Fabian Wohlgemuth

digital creative. tool wizard.

Docker

  • Daten aus Datenbank visualisieren – NocoDB + Metabase

    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.