diff --git a/CHANGELOG.md b/CHANGELOG.md index e8bda73..ae3f2c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ ## [Unreleased] ### Added +- **bi-tools プロジェクト用コンテナ (`containers/bi-tools`)** を追加しました。 + `devbase-base` に dbt-core + dbt-bigquery(1.12 系 / Python 3.11)と Lightdash CLI + (`@lightdash/cli`) を追加し、BigQuery 上の共有 dbt プロジェクト(`dbt build` / `test`)と + `lightdash deploy` / `preview` をホストから実行できます。Evidence / Superset は各自の + docker-compose・プロジェクトローカル npm で動くためホスト CLI は追加していません。 - **`devbase up` 後に dev コンテナへ接続した VS Code を自動オープン**できるように しました (PLAN31_3)。`DEVBASE_OPEN_EDITOR=1`(既定 OFF)で有効化、`devbase up --open` / `--no-open` で都度上書き。`/work/$GIT_REPO` をワークスペースとして開きます。 diff --git a/containers/bi-tools/Dockerfile b/containers/bi-tools/Dockerfile new file mode 100644 index 0000000..31e1ae8 --- /dev/null +++ b/containers/bi-tools/Dockerfile @@ -0,0 +1,54 @@ +# ================================== +# devbase-bi-tools: bi-tools プロジェクト用開発環境 +# devbase-base を継承し、dbt(BigQuery) と Lightdash CLI を追加する +# ================================== +# +# base に既に含まれるもの(ここでは追加しない): +# - Python パッケージマネージャ uv(ubuntu ユーザにインストール済み) +# - gcloud SDK(`bq` / `gcloud` を含む) +# - Node.js LTS(`node` / `npm` / `npx` / `yarn`) +# - Docker(DooD), gh, terraform, aws-cli, git 等 +# +# BIツール(tools/{evidence,lightdash,superset})の起動形態と CLI の扱い: +# - Lightdash : サーバは tools/lightdash の docker-compose で起動。ただし +# dbt プロジェクトに対する `lightdash deploy` / `lightdash preview` +# はホストから叩けるクライアント CLI があるため、これは入れておく。 +# - Evidence : `evidence` はプロジェクトローカルの devDependency。 +# tools/evidence で `npm install` → `npm run build/dev` で動くため +# ホストにグローバル CLI は不要(base の node/npm/npx で足りる)。 +# - Superset : `superset` コマンドはサーバ本体に同梱の管理 CLI で、Superset +# コンテナ内でのみ実行する(superset db upgrade / init 等)。 +# ホスト常駐 CLI は存在せず、自動化は REST API / MCP で行うため +# dev イメージには入れない。 + +FROM devbase-base:latest + +# --- root: グローバル npm CLI(Lightdash クライアント)--- +USER root +RUN set -eux; \ + npm i -g @lightdash/cli; \ + lightdash --version + +# --- ubuntu: dbt-core + BigQuery アダプタ --- +USER ubuntu +WORKDIR /work + +# 非対話シェル(docker exec / CI 等)でも dbt を解決できるよう +# ubuntu ユーザの user-bin を PATH へ通す。 +ENV PATH="/home/ubuntu/.local/bin:${PATH}" + +# バージョンは本プロジェクトで動作確認済みの 1.12 系 / Python 3.11 に固定。 +# `dbt` 実行ファイルは dbt-core が提供するため dbt-core を主パッケージとし、 +# BigQuery アダプタは --with で同梱する。uv tool により隔離インストールされ、 +# 実行ファイルは ~/.local/bin に配置される。 +RUN set -eux; \ + uv tool install --python 3.11 "dbt-core==1.12.*" --with "dbt-bigquery==1.12.*"; \ + dbt --version + +# 補足: +# - dbt パッケージ(dbt_utils 等)は各プロジェクトで `dbt deps` を実行して +# 取得する(dbt/dbt_packages/ は .gitignore 済み・イメージには焼き込まない)。 +# - profiles.yml はユーザ固有・ADC/OAuth 認証のためイメージに含めない +# (dbt/profiles.example.yml を各自コピーして使う)。 + +CMD ["sleep", "infinity"] diff --git a/containers/bi-tools/compose.yml b/containers/bi-tools/compose.yml new file mode 100644 index 0000000..e8b49ab --- /dev/null +++ b/containers/bi-tools/compose.yml @@ -0,0 +1,7 @@ +services: + + dev: + image: devbase-bi-tools:latest + build: + context: . + dockerfile: Dockerfile