Open9
Gemini CLIをDockerコンテナ内で使う
下記に対する漠然とした不安・懸念があったため、Dockerコンテナ内での使用方法を調べた。
- Node.js のインストール
- Gemini CLI による意図しない操作(ファイルの書き換え等)
- OS: Windows
- 事前準備: WSL、Docker
ディレクトリ構成
Current Directory
├ .gemini\
├ update-notifier-@google\
├ work\
└ compose.yml
compose.yml
services:
nodegemini:
image: node:lts
container_name: node-gemini
tty: true
volumes:
- ./work:/work
- ./update-notifier-@google:/root/.config/configstore/update-notifier-@google
- ./.gemini:/root/.gemini
command: >
sh -c "npm install -g @google/gemini-cli --force-immutable --no-update-notifier && bash"
working_dir: /work
毎回、コンテナ内で npm install
しなくて済むようにGemini CLIのインストールもここで行う。
Node.js は使ったことがなかったが、npxで実行、npmでインストールできるらしい。
commandの部分で && bash
としているのは、これがないと実行が終了してしまうため。ほかに良い方法があるのかも。
# Windows側
# カレントディレクトリでの実行
# コンテナを起動
> docker-compose up -d
# コンテナに入る
> docker-compose exec nodegemini bash
# コンテナ側(#1)
# 初期設定と個人Googleアカウントでの認証
# 認証するときのみ `--debug` オプションを付ける
> gemini --debug
# 個人のGoogleアカウントを選ぶと認証用のURLが表示される
https://accounts.google.com/o/oauth2/v2/auth~~~
# Windows側
# URLをブラウザで開く
# ログインすると、`http://localhost~~~` のURLにリダイレクトされる
# コンテナ側(#2)
# 別のターミナルを開いて、コンテナに入る
> docker-compose exec nodegemini bash
# curlで開いて、少し待つ
> curl "http://localhost~~~"
# 元のbash(#1)で次の表示となれば完了
Authenticated via "oauth-personal".
認証方法の参考
workフォルダの中にコードを置いて作業する。ほかのフォルダ内が変更される心配がない。
認証情報や設定もすべて保持されている(はず)。