From 64e9dcc74a56316259f85e333b346aa762a37165 Mon Sep 17 00:00:00 2001 From: SZCJW <792430652@qq.com> Date: Sun, 15 Mar 2026 22:50:28 +0800 Subject: [PATCH] x --- Dockerfile | 14 +++---------- build_and_run.sh | 52 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 11 deletions(-) diff --git a/Dockerfile b/Dockerfile index dd1b410..4eafab1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -46,17 +46,9 @@ RUN dnf -y install --setopt=install_weak_deps=False --nodocs \ WORKDIR /tmp ARG ROCM_MAJOR_VER=7 ARG GFX=gfx120X-all -RUN set -euo pipefail; \ - BASE="https://therock-nightly-tarball.s3.amazonaws.com"; \ - PREFIX="therock-dist-linux-${GFX}-${ROCM_MAJOR_VER}"; \ - KEY="$(maybe_proxy curl -s "${BASE}?list-type=2&prefix=${PREFIX}" \ - | tr '<' '\n' \ - | grep -o "therock-dist-linux-${GFX}-${ROCM_MAJOR_VER}\..*\.tar\.gz" \ - | sort -V | tail -n1)"; \ - echo "Downloading Latest Tarball: ${KEY}"; \ - maybe_proxy aria2c -x 16 -s 16 -j 16 --file-allocation=none "${BASE}/${KEY}" -o therock.tar.gz; \ - mkdir -p /opt/rocm; \ - tar xzf therock.tar.gz -C /opt/rocm --strip-components=1; \ +COPY therock.tar.gz /tmp/therock.tar.gz +RUN mkdir -p /opt/rocm && \ + tar xzf therock.tar.gz -C /opt/rocm --strip-components=1 && \ rm therock.tar.gz # 3. Configure Global ROCm Environment diff --git a/build_and_run.sh b/build_and_run.sh index 7ff7b29..29e0aa1 100644 --- a/build_and_run.sh +++ b/build_and_run.sh @@ -270,6 +270,58 @@ has_local_changes() { # 构建镜像 build_image() { + print_step "准备 ROCm SDK..." + + SDK_FILE="therock.tar.gz" + if [ ! -f "$SDK_FILE" ]; then + print_warning "本地未发现 $SDK_FILE,开始宿主机预下载..." + + # 自动检测 proxychains + PROXY_WRAPPER="" + if command -v proxychains4 >/dev/null 2>&1; then + PROXY_WRAPPER="proxychains4" + elif command -v proxychains >/dev/null 2>&1; then + PROXY_WRAPPER="proxychains" + fi + + # 获取下载地址 + BASE="https://therock-nightly-tarball.s3.amazonaws.com" + PREFIX="therock-dist-linux-gfx120X-all-7" + + print_info "正在获取最新版本信息..." + CURL_CMD="curl -s" + [ -n "$PROXY_WRAPPER" ] && CURL_CMD="$PROXY_WRAPPER $CURL_CMD" + [ -z "$PROXY_WRAPPER" ] && [ -n "$HTTP_PROXY_ARG" ] && CURL_CMD="curl -x $HTTP_PROXY_ARG -s" + + KEY=$($CURL_CMD "${BASE}?list-type=2&prefix=${PREFIX}" \ + | tr '<' '\n' \ + | grep -o "therock-dist-linux-gfx120X-all-7\..*\.tar\.gz" \ + | sort -V | tail -n1) + + if [ -n "$KEY" ]; then + DOWNLOAD_URL="${BASE}/${KEY}" + print_info "开始下载: $DOWNLOAD_URL" + + # 优先使用 aria2c + if command -v aria2c >/dev/null 2>&1; then + ARIA2_CMD="aria2c -x 16 -s 16 -k 1M -c" + [ -n "$PROXY_WRAPPER" ] && ARIA2_CMD="$PROXY_WRAPPER $ARIA2_CMD" + [ -z "$PROXY_WRAPPER" ] && [ -n "$HTTP_PROXY_ARG" ] && ARIA2_CMD="$ARIA2_CMD --all-proxy=$HTTP_PROXY_ARG" + $ARIA2_CMD "$DOWNLOAD_URL" -o "$SDK_FILE" + else + DL_CMD="curl -L -C - " + [ -n "$PROXY_WRAPPER" ] && DL_CMD="$PROXY_WRAPPER $DL_CMD" + [ -z "$PROXY_WRAPPER" ] && [ -n "$HTTP_PROXY_ARG" ] && DL_CMD="curl -x $HTTP_PROXY_ARG -L -C - " + $DL_CMD "$DOWNLOAD_URL" -o "$SDK_FILE" + fi + else + print_error "无法获取 SDK 下载地址,请检查代理设置或手动下载。" + exit 1 + fi + else + print_success "发现本地 $SDK_FILE,跳过下载。" + fi + print_step "开始构建 Docker 镜像..." print_info "镜像名称:${IMAGE_NAME}:${IMAGE_TAG}" print_info "构建目录:${PROJECT_DIR}"