Claude Code Channelを使おうとしたらBunが必要だったので、agentic-all1のDockerfileにBunをインストールする。
Dockerfileの確認
agentic-all のDockerfileを確認した。ベースイメージは python:3.13.6-slim-bookworm (ARM64向け)で、Node.js v24.14.1、Docker CLI、OpenAI CodeX、Clojure CLIなどがインストールされている構成になっている。これはdevコンテナ的に扱っている。
BunのDockerfileへの追加
Bunのインストール方法としては、公式インストーラスクリプトを使う方式とGitHubリリースからバイナリを直接ダウンロードする方式がある。今回は公式インストーラが最もシンプルで、バージョン管理も自動的に最新版を取得できるため、インストーラスクリプト方式を選択した。インストール後にバイナリを /usr/local/bin へ移動することで、マルチユーザー環境でも正しく動作するようにした。
Bunの公式インストーラスクリプト ( https://bun.sh/install ) を使ってインストールする方式を採用した。
インストーラは /root/.bun/bin にバイナリを配置するため、以下を追加した:
curl -fsSL https://bun.sh/install | bashでBunをインストールENV PATH=/root/.bun/bin:${PATH}でPATHに追加/etc/profile.d/agentic.shのPATH設定にも/root/.bun/binを追記
一般ユーザーからBunが使えない
ビルド後に動作確認したところ、コンテナ内でBunが見つからない状態だった。
原因を調査した結果、 /root ディレクトリのパーミッションが drwx------ (700) になっており、 一般ユーザーが /root/.bun/bin へアクセスできないので、Bunが使えなかった。
Bunはシングルバイナリであり、 /root/.bun 以下には bun バイナリ本体と bunx シンボリックリンクしか存在しない。
バイナリを/usr/local/binへ移動
インストール後にバイナリを /usr/local/bin へ移動する方式に変更した。
RUN curl -fsSL https://bun.sh/install | bash && \
mv /root/.bun/bin/bun /usr/local/bin/bun && \
ln -s /usr/local/bin/bun /usr/local/bin/bunx && \
rm -rf /root/.bun
/usr/local/bin はすべてのユーザーから実行可能なため、 sximada ユーザーでも問題なく動作する。ビルド後に bun --version で 1.3.14 が返ることを確認した。
脚注
筆者が管理するAIエージェント実行環境用のDockerイメージ。