Takuto Core の拡張
公式イメージに焼き込まれていないツールが必要になることはよくあります — kubectl、
terraform、社内ベンダーの CLI、あるいは固定バージョンの claude など。Takuto Core には
3 層の拡張モデル に加えて、ランタイムのみの微調整のための 4 つ目の方法があります。
ニーズに合うものを選んでください。
| ニーズ | 仕組み | どこに書くか |
|---|---|---|
| 単一バイナリの CLI を追加(kubectl、terraform、ベンダー CLI) | Provisioning | config.toml の [provisioning].install_commands |
| 焼き込み済みツールを特定バージョンに固定 | Provisioning(PATH シャドーイング) | [provisioning].install_commands |
| システムパッケージ(apt)やライブラリを追加 | カスタム Dockerfile | 新しい Dockerfile FROM ghcr.io/takuto-team/takuto-core:latest |
| 環境変数をどこでも追加 | Compose オーバーライド | docker-compose.override.yml |
| 追加のホストディレクトリをマウント | Compose オーバーライド | docker-compose.override.yml |
指針となる原則: Baked = 宣伝された機能に必須、Provisioning = admin の好み、 カスタムイメージ = 特殊な OS レベルのニーズ。
仕組み 1 — [provisioning].install_commands
最も一般的なケースです。Takuto の起動ごとに、エントリポイントは SHA でゲートされた インストールパスを実行します:
install_commandsリストをハッシュ化します。- ハッシュが前回の成功実行と一致すれば → スキップ(高速パス。変更がなければ毎回の起動で実行)。
- 異なれば →
TAKUTO_TOOLS_BIN=/opt/takuto-tools/binをエクスポートし、各コマンドを root としてbash -c経由で実行します。コマンドごとの失敗は警告をログに記録しますが 中断はしません。新しいハッシュは完全に成功したときだけ記録されるので、部分的な失敗は 次回の起動で再試行されます。
ツールは takuto-tools Docker ボリュームに置かれ、すべてのワーカー、エディター、実行コマンドの
container に 読み取り専用 でバインドマウントされます。/opt/takuto-tools/bin が $PATH の
先頭 に来るので、そこに置いたものはどこでも使え、かつ 同名の焼き込みツールをシャドーします。
冪等性はあなたの責任
リストが変わるたびに再実行されます — コマンドを 追加 したときも(既存のものも再実行されます)。 各コマンドを存在チェックでガードしてください:
[provisioning]
install_commands = [
'[ -f "$TAKUTO_TOOLS_BIN/kubectl" ] || (curl -fsSLo "$TAKUTO_TOOLS_BIN/kubectl" https://dl.k8s.io/release/v1.31.0/bin/linux/amd64/kubectl && chmod +x "$TAKUTO_TOOLS_BIN/kubectl")',
]
再起動後は、どの workflow も kubectl を直接呼べます。
claude を特定バージョンに固定する
[provisioning]
install_commands = [
'[ -f "$TAKUTO_TOOLS_BIN/claude" ] || (npm install -g --prefix "$TAKUTO_TOOLS_BIN/.npm" @anthropic-ai/claude-code@2.1.140 && ln -sf "$TAKUTO_TOOLS_BIN/.npm/bin/claude" "$TAKUTO_TOOLS_BIN/claude")',
]
PATH の優先順位により、固定バージョンが実行時にインストールされる @latest に勝ちます。元に戻すには:
行を削除し、再起動して、rm /opt/takuto-tools/bin/claude します。
プライベートなベンダー CLI をインストールする
install_commands = [
'[ -f "$TAKUTO_TOOLS_BIN/mycli" ] || curl -fsSL -H "Authorization: token $MYCO_TOKEN" https://internal.example.com/cli/mycli-v2.tgz | tar -xz -C "$TAKUTO_TOOLS_BIN"',
]
インストールコマンドが参照できるよう、MYCO_TOKEN を takuto.env に設定してください。
設定を変えずに再インストールを強制する
SHA ゲートは、リストが変わっていなければ再実行をスキップします。強制するには(例: バイナリが 壊れていると疑う場合):
docker exec --user root takuto-core-takuto-1 \
rm /opt/takuto-tools/.provisioning-sha
docker compose restart takuto
すべてのカスタマイズを消去する
docker compose down
docker volume rm takuto-core_takuto-tools
docker compose up -d
仕組み 2 — カスタム Dockerfile
これは システムパッケージ(apt ライブラリ、デーモン)や、複数の OS ディレクトリ
(/etc、/usr/share、/var/lib)に触れるものに使います。takuto-tools ボリュームは
単一の bin/ ディレクトリしか書かないので、システム全体へのインストールには provisioning は
不適切です。
# my-takuto.Dockerfile
FROM ghcr.io/takuto-team/takuto-core:latest
USER root
RUN apt-get update && apt-get install -y --no-install-recommends \
awscli postgresql-client \
&& rm -rf /var/lib/apt/lists/*
USER takuto
docker-compose.yml に組み込みます:
services:
takuto:
build:
context: .
dockerfile: my-takuto.Dockerfile
その後 docker compose build takuto && docker compose up -d。
仕組み 3 — docker-compose.override.yml
Compose は docker-compose.override.yml を自動的にマージします。リビルドを必要としない
ランタイムのみの微調整に使ってください。
追加の環境変数:
services:
takuto:
environment:
- GH_HOST=github.example.com # internal GHE instance
- MY_API_TOKEN=...
追加のバインドマウント:
services:
takuto:
volumes:
- /host/shared-cache:/home/takuto/.cache/shared:ro
Compose のオーバーライドは
takutoサービスにのみ影響します。マウントや環境変数を spawn されたワーカー container に伝播させるには、エンジン内のワーカーボリューム / パススルー環境のリストにそれらを含める必要があります — Takuto Core のソースでWORKER_VOLUMESとPASSTHROUGH_ENVを参照してください。
ツール一覧の概要
- Baked(宣伝された機能に必須):
node、npm、Rust ツールチェーン (cargo/rustfmt/clippy)、git、gh、jq、dockerCLI、iptables、ttyd、openvscode-server、mise、そして Playwright/Chromium のライブラリ。 - 初回起動時にインストール(イメージには焼き込まれません): エージェント CLI の
claude、codex、opencode、cursor-agent、および Atlassian CLI のacli— 共有のtakuto-toolsボリュームに取得され、config.toml([agent.providers.*].version、[jira].acli_version)で バージョン指定します。設定 を参照。 - Provisioning デフォルト(admin が固定/置換/無効化できる): Figma や Lokalise の CLI の ような単一バイナリツール。
- Removed(カスタムイメージで対応): 一部のデプロイでしか必要としない AWS CLI v2 のような ツール。
provisioning のトラブルシューティング
- 「再起動でコマンドが実行されない。」 SHA ゲートは変わらないリストをスキップします —
何か(コメントでも)編集してハッシュを変えるか、
rm /opt/takuto-tools/.provisioning-shaして 再起動してください。 - 「ワーカーがツールを見つけられない。」 ツールがボリュームに置かれたか
(
docker exec takuto-core-takuto-1 ls /opt/takuto-tools/bin/)、/opt/takuto-tools/binが ワーカーの$PATHの先頭にあるかを確認してください。インストール失敗については起動ログの[provisioning] … WARN行を探してください。
詳しくは トラブルシューティング を参照してください。