🐋
C# プロジェクトで Gemini CLI を使う
C# プロジェクトで Gemini CLI のサンドボックス環境を構築する方法です。
sandbox.Dockerfile
- ユーザー名
node
は Gemini 側でハードコードされているので変更不可 - Debian の方が軽くて良いです
- 1 GB に収まります
- ただし
apt-get
で .NET 環境のインストールが出来ないので対応する必要アリ - Ubuntu は 1.7 GB
- 環境変数
BUILD_SANDBOX
は使いません- セットアップが特殊なのでコンテナイメージとして固めてしまいます
## ベースイメージとして最新のDebianを使用
#FROM public.ecr.aws/docker/library/debian:bookworm-slim
## .NET 環境を apt-get するなら必要
FROM ubuntu:latest
# 必要なパッケージ、Node.js、gemini-cli、uvをインストールし、不要ファイルを削除
# 各処理の内容を詳細にコメントしています
RUN set -eux; \
\
# 1. パッケージリストの更新とシステムのアップグレード
apt-get update -y; \
apt-get upgrade -y; \
\
# 2. 必要なパッケージのインストール
apt-get install -y --no-install-recommends \
curl \
ca-certificates \
git \
npm \
; \
\
# # 3. Node.js 24.x のインストール(公式スクリプトを利用)
### curl -fsSL https://deb.nodesource.com/setup_24.x | bash -; \
### apt-get install -y --no-install-recommends nodejs; \
npm install -g --omit=dev node; \
\
# 4. gemini-cli をグローバルインストール(dev依存は除外)
npm install -g --omit=dev @google/gemini-cli; \
\
# 5. uv をインストール(公式スクリプトのためcurl | shを許容)
export UV_INSTALL_DIR=/usr/local/bin; \
curl -LsSf https://astral.sh/uv/install.sh | sh; \
\
# 6. 不要なキャッシュ・一時ファイル・npmキャッシュを削除し、イメージを軽量化
apt-get clean; \
apt-get autoremove -y; \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* ~/.npm;
# .NET SDK
RUN set -eux; \
\
# Add Microsoft package signing key
apt update; \
apt install -y lsb-release; \
###curl -LO https://packages.microsoft.com/config/ubuntu/$(lsb_release -cs)/packages-microsoft-prod.deb; \
curl -LO https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb; \
dpkg -i packages-microsoft-prod.deb; \
rm packages-microsoft-prod.deb; \
\
apt-get install -y dotnet-sdk-8.0; \
# Clear caches
apt-get clean; \
apt-get autoremove -y; \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* ~/.npm;
ENV DOTNET_CLI_UI_LANGUAGE=en
ENV DOTNET_NOLOGO=true
ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
# uvのキャッシュディレクトリを環境変数で指定
ENV UV_CACHE_DIR=/tmp/gemini-cli-cache-uv
# user name is hardcoded in gemini-cli
RUN useradd -m node
USER node
ビルド&実行方法
最後の .
も必要です。-t gemini
は好きな名前に変更可。
docker build -t gemini -f sandbox.Dockerfile .
RUN はキャッシュが効いてしまうので、Gemini CLI を更新したい場合は以下を実行します。
docker build --no-cache -t gemini -f sandbox.Dockerfile .
使うときは --sandbox-image
に -t
で指定した名前を渡します。
gemini -s --sandbox-image gemini
参考
いつもありがとうございます。
以上です。お疲れ様でした。
Discussion