Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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` をワークスペースとして開きます。
Expand Down
54 changes: 54 additions & 0 deletions containers/bi-tools/Dockerfile
Original file line number Diff line number Diff line change
@@ -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"]
7 changes: 7 additions & 0 deletions containers/bi-tools/compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
services:

dev:
image: devbase-bi-tools:latest
build:
context: .
dockerfile: Dockerfile
Loading