xfy c624997c04 feat(code-runner): add Go and Rust language support
为 Code Runner 新增 Go 和 Rust 两种编译型语言,沿用现有 base 镜像分层结构。

Go:
- run_cmd 直接用 go run(单条命令,内部编译+运行)
- 镜像把 GOCACHE/GOTMPDIR/GOPATH 重定向到 /tmp tmpfs
  (只读根文件系统下 /Users/issuser/.cache 不可写)
- default_limits: 1 核 / 256MB / 10s(编译冷启动比解释型慢)

Rust:
- rustc 编译 + 运行是两步,但 docker.rs 注入脚本用 exec 执行 run_cmd,
  exec 替换 shell 进程后 'A && B' 后半段不执行,
  因此镜像内置 /usr/local/bin/run-rust.sh wrapper 封装两步
- default_limits: 1 核 / 512MB / 15s(rustc 内存大、编译慢)

新增镜像与白名单后,默认 CODE_RUNNER_LANGUAGES=python,node,go,rust。
2026-07-09 09:40:32 +08:00

19 lines
612 B
Docker
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Rust 运行沙箱镜像。
# 与 src/api/code_runner/languages.rs 的 rust 注册项对齐:
# image: yggdrasil-runner-rust:latest
# run_cmd: /usr/local/bin/run-rust.sh
#
# rustc 编译 + 运行是两步,但 docker.rs 的注入脚本用 exec 执行 run_cmd
# exec 会替换 shell 进程,导致 "A && B" 的后半段不执行。
# 因此镜像内置 run-rust.sh wrapper 封装「编译并运行」逻辑。
FROM yggdrasil-runner-base:latest
RUN apk add --no-cache rust
COPY run-rust.sh /usr/local/bin/run-rust.sh
RUN chmod +x /usr/local/bin/run-rust.sh
COPY runner.toml /runner.toml
USER runner