尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

如何用 Nix 从 SurrealDB 源码构建 Docker 镜像与静态二进制

如何用 Nix 从 SurrealDB 源码构建 Docker 镜像与静态二进制 如何用 Nix 从 SurrealDB 源码构建 Docker 镜像与静态二进制【免费下载链接】surrealdbA scalable, distributed, collaborative, document-graph database, for the realtime web项目地址: https://gitcode.com/GitHub_Trending/su/surrealdb如果你需要从 SurrealDB 的源码仓库构建出一个完整功能的 Docker 镜像或一个可在 Linux 上直接运行的静态二进制Nix 是项目官方文档给出的构建路径。SurrealDB 仓库内置了 Nix 支持pkg/nix/README.md、flake.nix文档明确了两条路线已安装 Docker 的机器可以直接在nixos/nix容器里跑 Nix不往本机装任何东西已经装了 Nix 的 Linux 机器则可以本地构建。最终产物分别是docker/surreal.tar.gzDocker 镜像归档和bin/surreal静态二进制。先确认你要构建哪个产物两个产物的能力差异很大选错会直接影响后续部署Docker 镜像文档推荐支持 SurrealDB 的全部功能与存储后端。对应 flake 里的 docker.nix使用dockerTools.buildLayeredImage打包镜像名为surrealdb/surrealdbtag 形如v版本号版本号来自 Cargo.toml 的 workspace 版本并附加构建元数据因 Docker 不支持而替换为-。静态二进制文档明确警告它非常有限——不带任何可选功能只支持内存存储对应 musl 规格 中features [ storage-mem ]因此无法持久化数据。只适合快速试用不适合生产。另外注意文档给出的平台边界Nix 虽然跨平台但目前仅支持在 Linux 上构建 Linux 二进制。如果想在其他平台构建文档建议走从 Docker 运行 Nix的路径。路径 A只装了 Docker用 nixos/nix 容器构建这是文档给出的最短路径前提是本机已安装 Docker仓库已克隆并进入仓库根目录。构建命令会在nixos/nix容器里执行 Nix不会修改你本机的其他环境。git clone https://gitcode.com/GitHub_Trending/su/surrealdb cd surrealdb构建 Docker 镜像docker run -it --rm -v $(pwd):/surrealdb -w /surrealdb nixos/nix sh -c nix-build -A packages.x86_64-linux.docker-image mkdir docker cp -vL ./result docker/surreal.tar.gz rm result该命令把当前仓库目录挂载到容器的/surrealdb构建结束后把产物复制为docker/surreal.tar.gz。构建静态二进制docker run -it --rm -v $(pwd):/surrealdb -w /surrealdb nixos/nix sh -c nix-build -A packages.x86_64-linux.static-binary mkdir bin cp -v ./result/bin/surreal bin/ rm result产物保存在bin/surreal。再次提醒该二进制只有内存存储不能用于需要持久化的场景。路径 B本地已安装 Nix直接在仓库内构建如果你要构建本机平台的二进制或进行开发需要按官方说明安装 Nix然后完成两步配置。启用 Nix Flakes文档推荐编辑~/.config/nix/nix.conf或/etc/nix/nix.conf加入experimental-features nix-command flakesFlakes 默认未启用属于实验性功能。如果 Nix 以 multi-user 模式安装改完配置后需要重启守护进程使用 systemd 的系统可执行sudo systemctl restart nix-daemon配置二进制缓存可选从零构建 SurrealDB 及其依赖耗时较长文档提供了加速方式nix run nixpkgs#cachix use surrealdb注意该命令会下载并运行 Cachix 工具来配置本机使用 SurrealDB 的缓存副作用是往系统中引入并配置一个新工具执行前确认你接受这一点。执行构建在仓库根目录克隆仓库后cd进去下根据目标选择构建属性# 构建 Docker 镜像 nix build .#docker-image # 构建静态二进制 nix build .#static-binary # 构建默认二进制动态链接带全部功能产物在 result/bin nix build文档同时给出等价的远程引用写法不依赖本地克隆例如nix build github:surrealdb/surrealdb#docker-image并说明可以用分支/tag/commit后缀指定版本如v1.0.0。验证构建结果文档给出的成功判据是产物落盘与镜像可加载产物位置Docker 镜像归档应为docker/surreal.tar.gz路径 A静态二进制应为bin/surreal本地nix build的产物则在result/bin下。加载镜像用下面的命令把归档导入本机 Docker能正常加载即说明镜像构建成功docker load -i docker/surreal.tar.gz加载后镜像按 docker.nix 的定义以surrealdb/surrealdb为仓库名、v版本号为 tag 存在Entrypoint指向构建出的surreal可执行文件。限制与后续静态二进制的硬限制文档原文指出它目前非常有限不带任何可选功能只支持内存存储无法持久化数据。需要持久化时请使用 Docker 镜像。平台限制目前仅支持在 Linux 上构建 Linux 二进制其他平台请走路径 A从 Docker 运行 Nix。磁盘占用Nix 的工作方式会占用较多磁盘空间文档建议定期用nix-collect-garbage -d回收。继续深入Nix 环境同样服务于开发nix develop、direnv 自动配置等完整说明见 pkg/nix/README.md各平台非 Nix 构建方式见 doc/BUILDING.md该文档末尾同样指向 Nix 构建章节。【免费下载链接】surrealdbA scalable, distributed, collaborative, document-graph database, for the realtime web项目地址: https://gitcode.com/GitHub_Trending/su/surrealdb创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表