4.2 KiB
💿 カスタム Docker サポートを作成する方法
デフォルトの OpenHands サンドボックスは、最小限の ubuntu 構成で提供されています。ユースケースによっては、デフォルトでインストールされているソフトウェアが必要になる場合があります。この記事では、カスタム docker イメージを使用してこれを実現する方法について説明します。
セットアップ
Development.md のドキュメントに従って、OpenHands を使用できるようにしてください。
カスタム Docker イメージの作成
次に、debian/ubuntu ベースのカスタム docker イメージを作成する必要があります。たとえば、OpenHands で "node" バイナリにアクセスできるようにしたい場合は、次のような Dockerfile を使用します:
# 最新の ubuntu イメージから開始
FROM ubuntu:latest
# 必要なアップデートを実行
RUN apt-get update && apt-get install
# nodejs をインストール
RUN apt-get install -y nodejs
次に、選択した名前でカスタム docker イメージをビルドします。たとえば、"custom_image" とします。そのためには、ディレクトリを作成し、"Dockerfile" という名前のファイルをその中に配置し、ディレクトリ内でこのコマンドを実行します:
docker build -t custom_image .
これにより、custom_image という名前の新しいイメージが作成され、Docker Engine で利用できるようになります。
注: ここで説明する設定では、OpenHands はサンドボックス内で "openhands" ユーザーとして動作するため、Dockerfile 経由でインストールされたパッケージは、root だけでなくシステム上のすべてのユーザーが利用できるようになります。
上記の apt-get によるインストールでは、すべてのユーザー向けに nodejs がインストールされます。
config.toml ファイルでカスタムイメージを指定
OpenHands の設定は、トップレベルの config.toml ファイルを介して行われます。
OpenHands ディレクトリに config.toml ファイルを作成し、次の内容を入力します:
[core]
workspace_base="./workspace"
run_as_openhands=true
[sandbox]
base_container_image="custom_image"
base_container_imageが前述のカスタムイメージ名に設定されていることを確認してください。
実行
ルートディレクトリで make run を実行して OpenHands を起動します。
localhost:3001 に移動し、目的の依存関係が利用可能かどうかを確認します。
上記の例の場合、コンソールで node -v コマンドを実行すると v18.19.1 が出力されます。
おめでとうございます!
技術的な説明
詳細な説明については、実行時ドキュメントのカスタムDockerイメージの章を参照してください。
トラブルシューティング / エラー
エラー: useradd: UID 1000 は一意ではありません
このエラーがコンソール出力に表示される場合、OpenHands がサンドボックス内に UID 1000 で openhands ユーザーを作成しようとしていますが、この UID は (何らかの理由で) イメージ内ですでに使用されているためです。この問題を解決するには、config.toml ファイルの user_id フィールドの値を別の値に変更します:
[core]
workspace_base="./workspace"
run_as_openhands=true
[sandbox]
base_container_image="custom_image"
user_id="1001"
ポート使用エラー
ポートが使用中または利用不可であることを示すエラーメッセージが表示される場合は、実行中のすべての docker コンテナを削除してみてください (docker ps を実行し、関連するコンテナに対して docker rm を実行します)。その後、make run を再実行します。