@@ -117,7 +117,7 @@ graph LR
117117 subgraph devbase
118118 C[コンテナ 1<br/>/work 専用]
119119 D[コンテナ 2<br/>/work 専用]
120- E[共有ホーム <br/>/home/ubuntu ]
120+ E[共有AI設定 <br/>/persistent/ai ]
121121 end
122122 A --> C
123123 B --> D
@@ -126,7 +126,7 @@ graph LR
126126```
127127
128128- 各コンテナは独立した ` /work ` ボリュームを持つ
129- - ` /home/ubuntu ` は全コンテナで共有される
129+ - ` /persistent/ai ` (AI 設定・共有ファイル)は全コンテナで共有される( ` / home/ubuntu` 直下のうち永続化されるのは symlink 対象のみ。下記「AI 設定の永続化」参照)
130130- 異なるブランチでの並行作業に便利
131131
132132## ボリューム構造
@@ -135,9 +135,11 @@ devbase のコンテナは 2 種類のボリュームを使用します。
135135
136136| ボリューム名 | マウント先 | 共有範囲 | 用途 |
137137| -------------| -----------| ---------| ------|
138- | ` devbase_home_ubuntu ` | ` /home/ubuntu ` | 全コンテナで共有 | ユーザー設定 、SSH 鍵、シェル履歴等 |
138+ | ` devbase_home_ubuntu ` | ` /persistent/ai ` | 全コンテナで共有 | AI CLI 設定( ` .claude ` / ` .codex ` / ` .gemini ` 等) 、SSH 鍵、共有ファイル置き場( ` share ` )。詳細は「AI 設定の永続化」参照 |
139139| ` {project}_work_{index} ` | ` /work ` | 各コンテナ専用 | プロジェクトのソースコード、作業ファイル |
140140
141+ > ** Note:** ` devbase_home_ubuntu ` は ** ` /persistent/ai ` ** にマウントされます(` /home/ubuntu ` への直接マウントは廃止)。` /home/ubuntu ` 直下はコンテナ層(揮発)で、永続化されるのは entrypoint が ` /persistent/ai ` 配下へ symlink する設定ファイルのみです。シェル履歴など symlink 対象外のファイルは再生成で失われます。
142+
141143### ボリュームの永続性
142144
143145- ボリュームは ` devbase down ` でもコンテナが削除されても保持されます
@@ -154,7 +156,32 @@ docker volume ls | grep devbase
154156docker volume inspect devbase_home_ubuntu
155157```
156158
157- > ** Warning:** ` devbase_home_ubuntu ` ボリュームは全プロジェクトで共有されます。ここにプロジェクト固有のファイルを置くと、他のプロジェクトにも影響します。プロジェクト固有のファイルは ` /work ` に配置してください。
159+ > ** Warning:** ` devbase_home_ubuntu ` ボリューム(` /persistent/ai ` 、および symlink 経由でアクセスする ` ~/.claude ` / ` ~/share ` 等)は全プロジェクトで共有されます。ここにプロジェクト固有のファイルを置くと、他のプロジェクトにも影響します。プロジェクト固有のファイルは ` /work ` に配置してください。
160+
161+ ## AI 設定の永続化
162+
163+ AI CLI ツールの設定や認証情報は、コンテナを再生成しても保持されるよう
164+ ` devbase_home_ubuntu ` ボリューム(` /persistent/ai ` )に永続化されます。
165+
166+ 仕組みは ** symlink** です。コンテナ起動時、entrypoint(` containers/base/entrypoint.sh ` )が
167+ 以下の各エントリについて ` /home/ubuntu/<name> -> /persistent/ai/<name> ` の symlink を作成します。
168+
169+ | エントリ | 内容 |
170+ | ---------| ------|
171+ | ` .claude.json ` / ` .claude ` | Claude Code の設定・認証 |
172+ | ` .codex ` | Codex CLI の設定 |
173+ | ` .gemini ` | Gemini CLI の設定 |
174+ | ` .serena ` | Serena MCP の設定 |
175+ | ` .kiro ` | Kiro CLI の設定 |
176+ | ` .ssh ` | SSH 鍵 |
177+ | ` share ` | 全コンテナ共有のファイル置き場(任意用途) |
178+
179+ - ` /persistent/ai ` は全コンテナ共通の ` devbase_home_ubuntu ` ボリュームなので、** どのコンテナからも同じ実体** を参照します(例: ` ~/share ` は全コンテナで共有)。
180+ - symlink ** 対象外** のホーム配下ファイル(シェル履歴など)はコンテナ層に置かれ、再生成で失われます。永続化したいものは ` /persistent/ai ` 配下(= 上記 symlink 先)か ` /work ` に置いてください。
181+ - ` share ` 配下に置いた VS Code ワークスペースファイルは ` DEVBASE_WORKSPACE ` で開けます([ 環境変数] ( environment-variables.md ) 参照)。
182+
183+ > ** Note:** symlink 対象は entrypoint にビルド時 ` COPY ` で焼き込まれます。エントリを増減した場合は
184+ > イメージの再ビルドが必要です(` devbase up ` 単体では反映されない場合があります。[ CLI リファレンス] ( cli-reference.md ) の ` devbase project up ` の注記参照)。
158185
159186## コンテナイメージ階層
160187
@@ -265,7 +292,7 @@ devbase status
265292
266293## ベストプラクティス
267294
268- 1 . ** プロジェクト固有のファイルは ` /work ` に配置する** -- ` /home/ubuntu ` は全コンテナで共有されるため
295+ 1 . ** プロジェクト固有のファイルは ` /work ` に配置する** -- ` /persistent/ai ` ( ` ~/.claude ` 等の symlink 先・ ` ~/share ` ) は全コンテナで共有されるため
2692962 . ** ` CONTAINER_SCALE ` は必要最小限に設定する** -- リソース消費を抑制
2702973 . ** 作業終了後は ` devbase down ` を実行する** -- 自動ローテーションでディスク容量を管理
2712984 . ** ` devbase ps ` で状態を確認してからログインする** -- 異常終了したコンテナへのログイン試行を避ける
0 commit comments