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