xfy ca676a6146 feat(docker): 新增 yggdrasil-runner-bun 沙箱镜像
bun 在 Alpine 3.18 官方仓库不可用,用 bun.sh 安装脚本(多架构、自动检测
/etc/alpine-release 选 musl 变体)。踩坑三处:

1. BUN_INSTALL 必须对管道两侧生效——「VAR=x cmd | bash」只给左侧设变量,
   bash 侧读不到会 fallback 到 $HOME/.bun。改用 export。
2. bun 的 musl 二进制是 C++ 写的,依赖 libstdc++ + libgcc(musl libc 不带
   C++ 运行时),缺失时报 _ZNSt18condition_variable... symbol not found。
   这两个是运行时依赖,apk del 不得删除。
3. 安装路径固定到 /opt/bun + symlink /usr/local/bin/bun,避免依赖 $HOME
   (runner 用户 $HOME 可能不可写)。

本地验证通过:
- bun --version → 1.3.14
- runner 用户(1000:1000) + 只读根 + tmpfs(/code mode=1777, /tmp exec) 下
  成功执行含 interface/类型注解/循环的 TypeScript 代码。

build-runners.sh 加 bun 构建步骤;deploy-to-linux SKILL.md 的 build 循环、
docker save 列表、docker tag 列表、verify 循环全部补 bun(5→6 个镜像)。
2026-07-21 15:44:38 +08:00
2026-07-13 19:59:22 +08:00

Yggdrasil

基于 Dioxus 0.7 的全栈博客系统Rust 单一代码库同时编译为 WASM 前端和原生服务端。

技术栈

  • 框架: Dioxus 0.7 (fullstack)
  • 数据库: PostgreSQL + tokio-postgres
  • 样式: Tailwind CSS v4
  • 密码: Argon2
  • 会话: UUID token + cookie

功能

  • 邮箱注册 / 登录(单管理员模式,首次注册后关闭)
  • 会话管理与自动过期清理
  • 暗色 / 亮色主题切换
  • 后台文章撰写Tiptap Markdown 编辑器)
  • 文章归档与标签浏览

开发

依赖 Rust 1.95+、wasm32 目标、dx CLI、tailwindcss CLI v4 和 PostgreSQL。

# 配置数据库
DATABASE_URL=postgres://postgres:postgres@localhost:5432/yggdrasil

# 运行迁移(自动创建数据库并按顺序执行 migrations/ 下所有 SQL
./migrate.sh

# 启动开发服务器
make dev

构建

make build

生产部署

生产环境必须前置反向代理nginx/Caddy做 TLS 终结,并设置 APP_BASE_URLCOOKIE_SECURE=trueTRUSTED_PROXY_COUNT=1。详见 部署指南

Description
No description provided
Readme 9.4 MiB
Languages
Rust 77.4%
TypeScript 17.2%
CSS 3.3%
Dockerfile 0.9%
Makefile 0.6%
Other 0.6%