Codex避孕套(波德曼+Fedora)
使用核心开发工具为每个工作区提供可重用的基于Fedora的Podman环境,Python uv和Node.js。每个工作区都有一个确定的环境名称和自己的主目录,以实现干净的隔离。缓存的本地映像 localhost/codex:latest 减少了新工作区的启动时间。
特性
- 每个工作区的家
~/codex_condoms/{slug-hash} - 主机主机被屏蔽,因此只有专用主机和显式挂载可见
- 工作区路径中的确定性环境名称(slug+短散列)
- 工作空间安装在集装箱内
$HOME/workspace ~/.codex挂载读写以保留Codex身份验证和MCP配置(内部挂载为$HOME/.codex)- Python 3+构建deps和
uv(预装在映像中);Node.js+npm;常用开发工具 - 代理上下文已写入
$HOME/.config/codex/env集装箱内
需求
podman- 互联网接入构建基础形象
快速开始
启动工作区环境(图像是在首次运行时生成的):```bash
codexcondom /abs/path/to/workspace
## 用法```bash
codexcondom [/abs/path/to/workspace] [options]
选项:
--image IMG--缓存版本的基本Fedora映像(默认值:registry.fedoraproject.org/fedora:latest)--name NAME--覆盖环境名称--recreate-container--重新创建环境(不重建映像)--rebuild-image--重建没有缓存的缓存映像--recreate-homedir--擦除并重新创建每个工作区的主目录--total-rebuild--与--rebuild-image --recreate-container --recreate-homedir--no-mask-host-home--不要将主机隐藏在容器内--bash--启动交互式bash而不是codex
示例:```bash
Open a bash shell instead of codex
codexcondom /abs/path --bash
Rebuild the base image from scratch (on next run)
codexcondom /abs/path --rebuild-image
Fully reset everything for this workspace before launching
codexcondom /abs/path --total-rebuild
## 什么被配置
- 从工作区路径派生的环境名称
- 每个工作区的家 `~/codex_condoms/{slug-hash}` 主人家蒙面
- 支架:
- 工作区→ `$HOME/workspace` (使用匹配的UID/GID进行读写)
- `~/.codex` → `$HOME/.codex` (读写;如果缺少,则在主机上创建)
- 缓存映像预安装开发包、Python和Node.js
- `uv` 已预安装,可在PATH上作为 `uv`
- 将代理上下文写入 `$HOME/.config/codex/env`
## 安装(简短)
单行线(非交互式):```bash
curl -fsSL https://raw.githubusercontent.com/dkolb/codex-condom/main/install.sh | bash
或者从克隆的仓库中:```bash
./install.sh
- 安装 `codexcondom` 向 `~/.local/bin` 在你的家(或 `/root` 如果以root身份运行)
- 将运行时容器文件复制到 `~/.local/share/codexcondoms/`
- 提示添加 `~/.local/bin` 在交互时切换到PATH;如果丢失,则发出警告
## 安全说明
此环境故意不挂载主机Docker套接字。不支持在容器内运行Docker命令以降低风险。
## Python、uv和Node.js
- Python 3和常见的构建依赖项安装在基础映像中
- `uv` 已预安装,可在PATH上作为 `uv`
- Node.js和npm来自Fedora软件包(版本取决于图片)
## 安装 `~/.codex`
`~/.codex` 始终以读写方式挂载,如果丢失,则在主机上创建。这确保了Codex可以登录、刷新令牌,并在会话之间持久化MCP配置。
## 集装箱内部
- 工作区根目录: `$HOME/workspace`
- 代理环境文件: `$HOME/.config/codex/env` (键=值线)
- 包括: `CODEX_CONTAINER_NAME`, `CODEX_HOME`, `CODEX_WORKSPACE_DIR`
- 符号链接 `$HOME/.codex` → `$HOME/.config/codex` 用于传统工具
调试:
- 集 `CODEX_CONDOM_DEBUG=1` 启用详细日志和 `podman` 输出
## 故障排除
- SELinux: `:z` 应用于工作空间和 `.codex` 安装兼容性
- 版本:Python/Node版本跟踪Fedora映像;根据需要提供引脚特定版本
## 清理
删除持久容器和每个工作区的主页:```bash
podman rm -f
rm -rf ~/codex_condoms/{slug-hash}
