【Zig 日报】专注于安全的 Zig 开发容器,集成了 zls(Zig 语言服务器)和持久化构建缓存。

1 view
Skip to first unread message

ZigCC Team

unread,
Aug 8, 2026, 10:38:33 PM (7 hours ago) Aug 8
to zi...@googlegroups.com

原文链接:https://github.com/zigcc/forum/issues/360

https://github.com/bare-devcontainer/templates/tree/main/src/zig

选项

选项 ID 描述 类型 默认值
imageVariant Zig 和 Debian 版本(trixie = Debian 13,bookworm = Debian 12)。也可以输入其他已发布的标签。 string 0.16-trixie

入门指南

请参阅仓库 README 中的“入门指南”了解如何应用此模板。

镜像变体

imageVariant 选项用于选择 ghcr.io/bare-devcontainer/zig 基础镜像的标签,该镜像将 Zig 版本与 Debian 版本进行配对:trixie 是 Debian 13,bookworm 是 Debian 12。

应用模板时提供的选项仅供参考,并非封闭列表——您可以输入任何已发布的标签,包括更精确的标签(例如 Zig 补丁版本或带有日期的构建版本,以便进行更严格的版本锁定)。请查看已发布的标签以了解当前可用版本。

安全加固

此模板应用了 Bare Dev Container 模板的共享加固默认设置:

  • 基于 ghcr.io/bare-devcontainer/zig 构建。这是一个来自 bare-devcontainer/images 的精简镜像,具有锁定的摘要(pinned digests)、SLSA 来源证明以及用于供应链透明度的 SPDX SBOM。
  • 以非 root 的 dev 用户身份运行。
  • 剥离所有 Linux 权限(--cap-drop=ALL)并设置 no-new-privileges 安全选项,因此进程无法在容器内部获得提升的权限。如果您需要 su/sudo,请从 securityOpt 中移除 no-new-privileges
  • 启动一个初始化进程("init": true)来回收僵尸进程。

应用模板后,我们建议将镜像锁定到特定的摘要(digest),以便每次重新构建都使用您期望的确切镜像——请参阅“将镜像锁定到摘要”。

持久化缓存

Zig 的全局缓存持久化存储在命名卷中,因此重新构建容器以获取镜像更新时,无需重新下载软件包或重新编译依赖项:

卷 (Volume) 挂载路径 (Mount path) 用途
${devcontainerId}-zig-global-cache /home/dev/.cache/zig Zig 全局缓存

编辑器集成

  • 安装了 ziglang.vscode-zig VS Code 扩展,预配置了镜像中自带的 zigzls 二进制文件路径,并启用了 Zig 语言服务器 (zls)。

提示

  • 要使用调试器,请取消注释 devcontainer.json 中的 "capAdd": ["SYS_PTRACE"]
  • 如果您使用 VS Code,请取消注释 devcontainer.json 中的 remoteEnv 块,以便在 VS Code 标签页中打开 $EDITOR / $VISUAL / $GIT_EDITOR(例如 git commit)。

注意:此文件是由 devcontainer-template.json 自动生成的。请将其他说明添加至 NOTES.md 中。

加入我们

Zig 中文社区是一个开放的组织,我们致力于推广 Zig 在中文群体中的使用,有多种方式可以参与进来: 1. 供稿,分享自己使用 Zig 的心得 2. 改进 ZigCC 组织下的开源项目 3. 加入微信群QQ 群QQ 频道Telegram 群组Google Groups 与更多 Zig 爱好者交流

Reply all
Reply to author
Forward
0 new messages