#!/bin/bash # 在宿主机本地构建 SciCode 沙箱镜像(不从 Docker Hub 拉 scicode-benchmark)。 # 用法与 Terminal Bench 预加载相同:先在宿主机准备好镜像,再 docker run 评测容器并挂 docker.sock。 # # bash bash/images_load/preload_k3_sandbox_images.sh # # 注意: # - 评测仍在 evalscope 容器里跑,沙箱是宿主机 Docker 再起的子容器 # - SciCode 首次运行还会按内容哈希打 tag,有本地层缓存就不会再拉 Hub set -euo pipefail PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" SCICODE_DIR="$PROJECT_ROOT/evalscope/evalscope/benchmarks/scicode/docker" H5_URL="https://modelscope.cn/datasets/evalscope/SciCode/resolve/master/test_data.h5" echo "==> 检查基座镜像(已有则跳过 pull)" if docker image inspect python:3.11-slim >/dev/null 2>&1; then echo " ok python:3.11-slim" else echo " docker pull python:3.11-slim" docker pull python:3.11-slim fi echo "==> SciCode: 确保 test_data.h5" if [ ! -f "$SCICODE_DIR/test_data.h5" ]; then echo " downloading test_data.h5 ..." curl -L --fail -o "$SCICODE_DIR/test_data.h5" "$H5_URL" fi ls -lh "$SCICODE_DIR/test_data.h5" echo "==> docker build scicode-benchmark:latest" docker build -t scicode-benchmark:latest "$SCICODE_DIR" echo "" echo "完成。本地镜像:" docker images --format 'table {{.Repository}}\t{{.Tag}}\t{{.Size}}' | grep -E 'REPOSITORY|scicode-benchmark|python' echo "" echo "下一步:docker run 评测镜像,挂 -v /var/run/docker.sock:/var/run/docker.sock" echo "SciCode 需要 run.py 打开 sandbox(已加入 SANDBOX_DATASETS)。"