You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker构建无法找到并执行已存在的setup.sh脚本求助

问题

我正在为DECoN(v2.0.0)构建Docker容器,执行步骤如下:

  • 基于最新bash镜像构建(FROM bash:latest)
  • 通过RUN命令下载工具源码并解压
  • 将WORKDIR设置为工具的./Linux子目录
  • 执行该子目录中已存在的setup.sh脚本

对应的Dockerfile内容:

# syntax=docker/dockerfile:1

# start from a bash image 
FROM bash:latest

# download files 
RUN wget https://github.com/RahmanTeam/DECoN/archive/refs/tags/v2.0.0.tar.gz && \
    tar -xf v2.0.0.tar.gz

# go to directory 
WORKDIR DECoN-2.0.0/Linux

# run setup script 
RUN setup.sh

# check directory content 
RUN ls 

执行构建命令docker build -t decon:2.0.0 .时返回错误:

/bin/sh: setup.sh: not found
The command '/bin/sh -c setup.sh' returned a non-zero code: 127

我尝试过setup.sh、./setup.sh、/DECoN-2.0.0/Linux/setup.sh等多种执行方式,均无效。附setup.sh内容:

#!/bin/bash

Rscript sessionInfo.R > setup.log 2>&1

解决方案

问题根源

核心问题有两个:

  1. 脚本无执行权限:从GitHub下载解压后的setup.sh默认未赋予可执行权限,直接调用会触发错误。
  2. 缺失依赖环境:setup.sh中调用了Rscript,但bash:latest仅包含基础bash环境,未安装R语言,即使脚本能执行,后续仍会报错。

修正后的Dockerfile

# syntax=docker/dockerfile:1

# 基于bash镜像构建
FROM bash:latest

# 安装R语言依赖,解决Rscript不存在的问题
RUN apt-get update && apt-get install -y --no-install-recommends r-base

# 下载、解压DECoN源码并清理压缩包
RUN wget https://github.com/RahmanTeam/DECoN/archive/refs/tags/v2.0.0.tar.gz && \
    tar -xf v2.0.0.tar.gz && \
    rm v2.0.0.tar.gz

# 切换至目标目录,给脚本添加可执行权限
WORKDIR DECoN-2.0.0/Linux
RUN chmod +x setup.sh

# 执行setup脚本
RUN ./setup.sh

# 验证执行结果
RUN cat setup.log && ls

关键修正说明

  • 添加执行权限:通过chmod +x setup.sh赋予脚本可执行权限,保证系统能识别并运行它。
  • 安装R环境:使用apt-get安装r-base,满足Rscript的运行依赖。
  • 明确脚本路径:用./setup.sh指定当前目录下的脚本,避免依赖系统PATH环境变量查找。
  • 清理冗余文件:删除下载的压缩包,减小镜像体积。

内容的提问来源于stack exchange,提问作者schmat_90

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 22:17:17