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 个镜像)。
16 lines
534 B
TOML
16 lines
534 B
TOML
# Bun runner 镜像的运行时默认值(参考用)。
|
||
# 实际生效配置由 Rust 侧 LANGUAGES 注册表 + CODE_RUNNER_* 环境变量决定(见
|
||
# src/api/code_runner/languages.rs、src/infra/runner_config.rs),本文件仅作为
|
||
# 镜像构建产物的自描述,便于运维核对镜像与代码的契约一致。
|
||
language = "bun"
|
||
extension = "ts"
|
||
run_command = "bun run /code/main.ts"
|
||
allow_network = false
|
||
|
||
[default_limits]
|
||
cpu_cores = 1.0
|
||
memory_mb = 256
|
||
timeout_secs = 5
|
||
output_bytes = 1048576
|
||
allow_network = false
|