はじめに
こんにちは。
今回は、Windows11のローカル環境にDockerを使い、GoogleのGemini CLIを実行する環境を構築してみました。
「新しいツールを試したいけど、ローカル環境は汚したくない」「万が一の動作が心配なので、隔離された環境で安全に使いたい」という思いから、今回の環境構築に至りました。
この記事では、AI搭載エディタ「Cursor」を相棒に、ほとんど手間をかけずに環境を構築した手順と、認証で少しだけ詰まった点の解決策を共有します。
私のPC環境
- OS: Windows 11 Home
- CPU: AMD Ryzen 7 5700X 8-Core Processor
- メモリ: 32GB
なぜDocker上に環境を構築したのか
理由はシンプルで、以下の2点です。
-
ローカル環境を汚さないため
新しいツールを試す際、関連ファイルや設定がPC内に散らかるのは避けたいものです。Dockerコンテナなら、不要になった際にコンテナを削除するだけで、環境をクリーンに保てます。 -
セキュリティを確保するため
万が一、Gemini CLIが意図しない動作をした場合でも、その影響をコンテナ内に限定できます。ローカルのファイルシステムから隔離されているため、安心してコマンドを実行できます。
実施した手順
1. Docker Desktopのインストール
まず、WindowsにDocker環境を導入します。インストールは、基本的に以下の記事の手順通りに進めることで問題なく完了します。
https://qiita.com/0xv80/items/597300827b212cab4328
ただ、私の場合はこの画面でSkip
せず、Googleアカウントを使ってサインアップを行いました。
画面下部のGoogleアイコンボタンを押すとブラウザが起動し、以下の画面が表示されるのでSign up
ボタンを押して認証を完了させます。
2. CursorにDockerfileを作ってもらう
次に、Gemini CLIを実行するためのDockerコンテナの設計図であるDockerfile
を作成します。
ここでは、AI搭載エディタのCursorを活用しました。
まず、以下のような簡単な指示を出してみました。
gemini cliを動かせるDockerコンテナ環境を構築して
すると、なぜかPythonを使おうとしたので、軌道修正を依頼しました。
pythonは必要ですか?node.jsさえ入っていれば、gemini cliはインストールできる認識です。
構築方針が問題なさそうだったので、この内容で作業を開始してもらい、最終的に以下のDockerfile
が完成しました。
FROM node:18
# gemini CLIをグローバルインストール
RUN npm install -g @google/gemini-cli
# 作業ディレクトリ
WORKDIR /workspace
# 初回起動時にgemini --debugを実行するエントリポイント
CMD ["gemini", "--debug"]
3. Dockerコンテナのビルドと起動
CursorはDockerfile
と同時に、丁寧なREADME.md
も生成してくれました。この使い方に沿って、イメージのビルドとコンテナの起動を実行します。
# Gemini CLI用Dockerコンテナ
このコンテナは、Google Gemini CLIをNode.js環境で動作させるためのものです。
## 使い方
### 1. イメージのビルド
```sh
docker build -t gemini-cli .
```
### 2. コンテナの起動
```sh
docker run --rm -it gemini-cli
```
初回起動時はGoogleアカウントでの認証が必要です。`--debug`オプション付きでgemini CLIが起動します。
認証フローに従って、ブラウザで認証を完了してください。
---
## 補足
- 必要に応じて`-v`オプションで認証情報や設定ファイルをホストと共有できます。
- 詳細は公式ドキュメントをご参照ください。
ターミナルでdocker run
コマンドを実行すると、無事にGemini CLIが起動しました。(最初にテーマを選ぶように指示されるので、好みのものを選択してください。)
4. Gemini CLIのGoogleアカウント認証(少し工夫が必要)
テーマを選択後、認証方法を尋ねられます。今回は一番上のLogin with Google
を選択します。
Login with Google
を選択すると、認証用のURLがターミナルに表示されるので、このURLをブラウザで開きます。
ブラウザでGoogleアカウントを選択し、ログインを進めていくと…
最終的にこのサイトにアクセスできません
というエラー画面が表示されてしまいました。
これは、コンテナ内で起動したCLIの認証情報を、ブラウザ(外部)経由で受け取ることができないために発生します。
【解決策】手動で認証情報をコンテナに伝える
この問題は、以下の手順で解決できます。
※こちらの記事を参考にさせていただきました。
https://deep.tacoskingdom.com/blog/276
-
リダイレクトURLをコピーする
エラー画面が表示されているブラウザのアドレスバーから、URL全体をコピーします。 -
別のターミナルからコンテナに入る
新しいターミナルを開き、docker exec -it {コンテナID or コンテナ名} bash
コマンドで、現在起動しているコンテナに接続します。 -
curl
コマンドでURLにアクセスする
コンテナ内で、先ほどコピーしたURLを引数にしてcurl
コマンドを実行します。curl -v "http://localhost~..." # ここにコピーしたURLを貼り付ける
この操作により、認証情報が手動でコンテナに渡されます。
元のターミナルに戻ると、無事に認証が完了し、Gemini CLIが使えるようになっています!
今回の作業を通して学んだポイント
-
AIエージェント(Cursor)の活用でDockerfileの自作がほぼ不要だったこと
Dockerに詳しくなくても、AIと対話するだけで最適なDockerfile
が瞬時に用意できるのは、非常に強力だと感じました。 -
人間は本質的な作業に集中できること
Dockerfileの作成や基本的なコマンドの整理はAIが代行してくれたため、人間(私)は「Google認証をどう通すか」という今回の詰まりポイントの解決に集中することができました。
まとめ
DockerとAIエージェントを活用することで、ローカル環境を汚さずに、かつ安全なツール実行環境を予想以上に簡単に構築できました。
認証部分で少し工夫は必要でしたが、それも含めて非常にスムーズな体験でした。
「ローカル環境をクリーンに保ちたい」「新しいツールを安全に試したい」という方には、非常におすすめの方法です。