This is an automated email from the ASF dual-hosted git repository.

klesh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/devlake.git


The following commit(s) were added to refs/heads/main by this push:
     new 9b111a0f2 build(compose): make grafana port, root URL and datasource 
configurable (#9207)
9b111a0f2 is described below

commit 9b111a0f23a5b928a71d341cfa404fcf7af0dbde
Author: Dirk <[email protected]>
AuthorDate: Wed Oct 14 08:57:10 2026 +0200

    build(compose): make grafana port, root URL and datasource configurable 
(#9207)
    
    Follow-up to #9090, same `${VAR:-default}` pattern. The grafana service in
    `docker-compose-dev-{mysql,postgresql}.yml` hard-codes its host port, its
    public root URL and the database it reads from, so running both stacks
    side by side, putting Grafana behind a different proxy URL, or pointing
    the dashboards at an existing database requires editing tracked files.
    
    - `GRAFANA_HOST_PORT` (default 3001 / 3002) for the published port.
    - `GRAFANA_ROOT_URL` for `GF_SERVER_ROOT_URL`.
    - `GRAFANA_DATABASE_{TYPE,HOST,PORT,NAME,USER,PASSWORD}` for the
      `DATABASE_*` variables read by `grafana/scripts/entrypoint.sh`.
    - The legacy `MYSQL_*` / `POSTGRES_*` variables are derived from the same
      values so dashboard images that predate the `DATABASE_*` entrypoint
      (e.g. an older tag pulled via `DEVLAKE_IMAGE_REGISTRY`) get a
      consistent datasource. The current entrypoint overwrites them from
      `DATABASE_*`, so they are inert there.
    - `env.example` documents the variables, commented out like
      `DEVLAKE_IMAGE_REGISTRY`, because the services read `.env` via
      `env_file`.
    
    With none of the variables set, `docker compose config` renders the same
    values as before; the only addition is the four legacy variables.
    
    Signed-off-by: DoDiODev <[email protected]>
---
 docker-compose-dev-mysql.yml      | 21 +++++++++++++--------
 docker-compose-dev-postgresql.yml | 21 +++++++++++++--------
 env.example                       | 14 ++++++++++++++
 3 files changed, 40 insertions(+), 16 deletions(-)

diff --git a/docker-compose-dev-mysql.yml b/docker-compose-dev-mysql.yml
index ea760937f..8f654b533 100644
--- a/docker-compose-dev-mysql.yml
+++ b/docker-compose-dev-mysql.yml
@@ -38,19 +38,24 @@ services:
     build:
       context: grafana/
     ports:
-      - 3001:3000
+      - ${GRAFANA_HOST_PORT:-3001}:3000
     volumes:
       - grafana-storage:/var/lib/grafana
       - ./grafana/dashboards/mysql:/etc/grafana/dashboards:ro
     environment:
-      GF_SERVER_ROOT_URL: "http://localhost:4001/grafana";
+      GF_SERVER_ROOT_URL: "${GRAFANA_ROOT_URL:-http://localhost:4001/grafana}";
       GF_USERS_DEFAULT_THEME: "light"
-      DATABASE_TYPE: mysql
-      DATABASE_HOST: mysql
-      DATABASE_PORT: 3306
-      DATABASE_NAME: lake
-      DATABASE_USER: merico
-      DATABASE_PASSWORD: merico
+      DATABASE_TYPE: "${GRAFANA_DATABASE_TYPE:-mysql}"
+      DATABASE_HOST: "${GRAFANA_DATABASE_HOST:-mysql}"
+      DATABASE_PORT: "${GRAFANA_DATABASE_PORT:-3306}"
+      DATABASE_NAME: "${GRAFANA_DATABASE_NAME:-lake}"
+      DATABASE_USER: "${GRAFANA_DATABASE_USER:-merico}"
+      DATABASE_PASSWORD: "${GRAFANA_DATABASE_PASSWORD:-merico}"
+      # Legacy vars for older dashboard images; kept in sync with generic vars 
above.
+      MYSQL_URL: 
"${GRAFANA_DATABASE_HOST:-mysql}:${GRAFANA_DATABASE_PORT:-3306}"
+      MYSQL_DATABASE: "${GRAFANA_DATABASE_NAME:-lake}"
+      MYSQL_USER: "${GRAFANA_DATABASE_USER:-merico}"
+      MYSQL_PASSWORD: "${GRAFANA_DATABASE_PASSWORD:-merico}"
       TZ: UTC
     restart: always
     depends_on:
diff --git a/docker-compose-dev-postgresql.yml 
b/docker-compose-dev-postgresql.yml
index 17af7a422..2a3826f23 100644
--- a/docker-compose-dev-postgresql.yml
+++ b/docker-compose-dev-postgresql.yml
@@ -34,19 +34,24 @@ services:
     build:
       context: grafana/
     ports:
-      - 3002:3000
+      - ${GRAFANA_HOST_PORT:-3002}:3000
     volumes:
       - grafana-storage:/var/lib/grafana
       - ./grafana/dashboards/postgresql:/etc/grafana/dashboards:ro
     environment:
-      GF_SERVER_ROOT_URL: "http://localhost:4000/grafana";
+      GF_SERVER_ROOT_URL: "${GRAFANA_ROOT_URL:-http://localhost:4000/grafana}";
       GF_USERS_DEFAULT_THEME: "light"
-      DATABASE_TYPE: postgresql
-      DATABASE_HOST: postgres
-      DATABASE_PORT: 5432
-      DATABASE_NAME: lake
-      DATABASE_USER: merico
-      DATABASE_PASSWORD: merico
+      DATABASE_TYPE: "${GRAFANA_DATABASE_TYPE:-postgresql}"
+      DATABASE_HOST: "${GRAFANA_DATABASE_HOST:-postgres}"
+      DATABASE_PORT: "${GRAFANA_DATABASE_PORT:-5432}"
+      DATABASE_NAME: "${GRAFANA_DATABASE_NAME:-lake}"
+      DATABASE_USER: "${GRAFANA_DATABASE_USER:-merico}"
+      DATABASE_PASSWORD: "${GRAFANA_DATABASE_PASSWORD:-merico}"
+      # Legacy vars for older dashboard images; kept in sync with generic vars 
above.
+      POSTGRES_URL: 
"${GRAFANA_DATABASE_HOST:-postgres}:${GRAFANA_DATABASE_PORT:-5432}"
+      POSTGRES_DATABASE: "${GRAFANA_DATABASE_NAME:-lake}"
+      POSTGRES_USER: "${GRAFANA_DATABASE_USER:-merico}"
+      POSTGRES_PASSWORD: "${GRAFANA_DATABASE_PASSWORD:-merico}"
       TZ: UTC
     restart: always
     depends_on:
diff --git a/env.example b/env.example
index 292f12798..cdb296821 100755
--- a/env.example
+++ b/env.example
@@ -27,6 +27,20 @@
 # Uncomment and set it (e.g. docker.io) to pull directly from Docker Hub.
 # DEVLAKE_IMAGE_REGISTRY=devlake.docker.scarf.sh
 
+# Grafana overrides for the docker-compose-dev-*.yml files. Same pattern as
+# above: the defaults live in the compose files, keep these commented out
+# unless you need them. The GRAFANA_DATABASE_* values point the dashboards at
+# a different database than the bundled one. Values shown are the MySQL
+# defaults (PostgreSQL: port 3002/4000, type postgresql, host postgres, 5432).
+# GRAFANA_HOST_PORT=3001
+# GRAFANA_ROOT_URL=http://localhost:4001/grafana
+# GRAFANA_DATABASE_TYPE=mysql
+# GRAFANA_DATABASE_HOST=mysql
+# GRAFANA_DATABASE_PORT=3306
+# GRAFANA_DATABASE_NAME=lake
+# GRAFANA_DATABASE_USER=merico
+# GRAFANA_DATABASE_PASSWORD=merico
+
 # Lake plugin dir, absolute path or relative path
 PLUGIN_DIR=bin/plugins
 REMOTE_PLUGIN_DIR=python/plugins

Reply via email to