Gemini-CLIをDockerコンテナ内で限定して動作させてみる
※ 当ページには【広告/PR】を含む場合があります。
2025/07/09

NodejsコンテナにGemini-CLIを導入する
+ ホストマシン(開発用パソコン等)にはNodejsをインストールさせたくない
+ Gemini-CLIはDocker内部で動作させ、グローバルインストールはしない
Gemini-CLIのSandbox
Sandbox(=砂場)
NodeコンテナにGemini-CLIをインストールする
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 12 (bookworm)
Release: 12
Codename: bookworm
$ touch Dockerfile compose.yml .env
FROM node:24-bookworm-slim
RUN apt update && apt upgrade -y
RUN apt install curl -y
ENV PS1="[\u@\h:\w]$"
CMD ["bash"]
services:
app:
image: gemini-cli-dev:node24
build: .
container_name: gemini-cli-dev
user: "node:node"
environment:
NODE_ENV: ${NODE_ENV}
volumes:
- ./:/usr/src/app
working_dir: "/usr/src/app"
tty: true
NODE_ENV=development
$ docker compose build
$ docker compose up -d && docker compose exec app bash
#...コンテナ内にアタッチ
package.json
yarn init
package.json
{
"name": "my-gemini",
"version": "0.0.1",
"description": "To learn gemini-cli",
"private": true,
"scripts": {}
}
$ yarn add -D @google/gemini-cli
gemini
package.json
{
//...
"scripts": {
//👇追加
"gemini": "gemini",
//...
--debug
$ yarn gemini --debug


「Login with Google」




#...新しいターミナルで
$ docker compose up -d && docker compose exec app bash
#...コンテナ内にアタッチ
$ curl -v "http://localhost:36375/oauth2*****"
* Trying 127.0.0.1:36375...
* Connected to localhost (127.0.0.1) port 36375 (#0)
> GET /oauth2callback?state=******** HTTP/1.1
> Host: localhost:36375
> User-Agent: curl/7.88.1
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Location: https://developers.google.com/gemini-code-assist/auth_success_gemini
< Date: Mon, 07 Jul 2025 05:45:01 GMT
< Connection: keep-alive
< Keep-Alive: timeout=5
< Transfer-Encoding: chunked
<
* Connection #0 to host localhost left intact

$ yarn gemini
Google AI StudioにアサインしてAPIキーを利用する
Google AI StudioでAPIキーを発行
[Get API key]

[APIキーを作成]




[Open in Cloud Console]



Nodeコンテナに設定を反映させる
.env
NODE_ENV=development
GEMINI_API_KEY=APIキーの値
compose.yml
services:
app:
image: gemini-cli-dev:node24
build: .
container_name: gemini-cli-dev
user: "node:node"
environment:
NODE_ENV: ${NODE_ENV}
#👇追加
GEMINI_API_KEY: ${GEMINI_API_KEY}
volumes:
- ./:/usr/src/app
working_dir: "/usr/src/app"
tty: true
$ docker compose up -d && docker compose exec app bash
#コンテナ内にアタッチ
$ yarn gemini

まとめ
記事を書いた人
ナンデモ系エンジニア
主にAngularでフロントエンド開発することが多いです。 開発環境はLinuxメインで進めているので、シェルコマンドも多用しております。 コツコツとプログラミングするのが好きな人間です。
カテゴリー