初始化提交
This commit is contained in:
commit
887c1f449e
963 files changed
+166869
No files matched your search
@@ -0,0 +1,49 @@
|
||||
# ==============================
|
||||
# 乾坤 · 魂镜安全沙箱镜像(Sandbox Engine):Rust + axum,多阶段构建。
|
||||
# 构建:rust:bookworm(含 toolchain);运行:debian:bookworm-slim(需 glibc)。
|
||||
# 监听 8090,健康检查走 GET /healthz。
|
||||
# 隔离在进程组 + 超时 + 资源限制层面;如需更强隔离(seccomp / cgroup / read-only 根),见 sandbox/README.md「后续加固」。
|
||||
# ==============================
|
||||
|
||||
# ---------- 构建阶段 ----------
|
||||
FROM rust:1.83-bookworm AS builder
|
||||
WORKDIR /build
|
||||
|
||||
# 国内 crates 镜像(按网络情况保留或删除该 RUN)
|
||||
RUN printf '[source.crates-io]\nreplace-with = "ustc"\n[source.ustc]\nregistry = "sparse+https://mirrors.ustc.edu.cn/crates.io-index"\n' \
|
||||
> /usr/local/cargo/config.toml
|
||||
|
||||
# 先复制依赖清单以最大化层缓存(dummy src 触发依赖编译),再覆盖真实源码
|
||||
COPY sandbox/Cargo.toml ./
|
||||
RUN mkdir -p src && echo 'fn main() {}' > src/main.rs && cargo build --release || true
|
||||
|
||||
# 复制真实源码并构建(sandbox/ 整体拷入;根 .dockerignore 已忽略 target/)
|
||||
COPY sandbox/ ./
|
||||
RUN touch src/main.rs && cargo build --release
|
||||
|
||||
# ---------- 运行阶段 ----------
|
||||
FROM debian:bookworm-slim
|
||||
|
||||
ENV TZ=Asia/Shanghai \
|
||||
RUST_LOG=info \
|
||||
SANDBOX_HOST=0.0.0.0 \
|
||||
SANDBOX_PORT=8090 \
|
||||
SANDBOX_BASE_WORKDIR=/app/sandbox-work \
|
||||
SANDBOX_LOG_DIR=/app/logs
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
ca-certificates tzdata curl \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& ln -snf "/usr/share/zoneinfo/$TZ" /etc/localtime && echo "$TZ" > /etc/timezone
|
||||
|
||||
WORKDIR /app
|
||||
RUN mkdir -p /app/sandbox-work /app/logs
|
||||
|
||||
COPY --from=builder /build/target/release/hunjing-sandbox /usr/local/bin/hunjing-sandbox
|
||||
|
||||
EXPOSE 8090
|
||||
|
||||
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
||||
CMD curl -fsS "http://127.0.0.1:${SANDBOX_PORT}/healthz" || exit 1
|
||||
|
||||
CMD ["hunjing-sandbox"]
|
||||
Reference in new issue
Block a user