agentic-allのDockerfileにBunを追加する

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 にバイナリを配置するため、以下を追加した:

  1. curl -fsSL https://bun.sh/install | bash でBunをインストール
  2. ENV PATH=/root/.bun/bin:${PATH} でPATHに追加
  3. /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 --version1.3.14 が返ることを確認した。

脚注


1

筆者が管理するAIエージェント実行環境用のDockerイメージ。

作成日
更新日
更新日
最終更新日