当前位置: 首页 > 知识库问答 >
问题:

如何在docker文件中运行sh脚本?

俞学
2023-03-14

在docker文件中运行sh脚本时,出现以下错误:

/上传。上海:5:/上载sh:sudo:找不到/上载sh:21:
/上载sh:换人不好

sudo chmod 755 upload.sh # line 5
version=$(git rev-parse --short HEAD)
echo "version $version"
echo "Uploading file"

for path in $(find public/files -name "*.txt"); do
  echo "path $path"
  WORDTOREMOVE="public/" 
  echo "WORDTOREMOVE $WORDTOREMOVE"
  # cause of the error
  newpath=${path//$WORDTOREMOVE/} # Line 21
  echo "new path $path"
  url=http://localhost:3000/${newpath}
  ...
  echo "Uploading file"
  ...
done

DockerFile

FROM node:10-slim

EXPOSE 3000 4001


WORKDIR /prod/code
...
COPY . .

RUN ./upload.sh
RUN npm run build
CMD ./DockerRun.sh

有什么想法吗?

共有2个答案

宿淳
2023-03-14

您正在使用的docker映像(节点:10 slim)上未安装sudo,因为此docker映像以用户根用户身份运行进程:

docker run-it节点: 10-Slim bashroot@68dcffceb88c:/#id uid=0(root)gid=0(root)组=0(root)root@68dcffceb88c:/#sudoroot@68dcffceb88c:/#

当Dockerfile运行时运行/上载sh它将运行:sudo chmod 755上传。sh

在docker中使用sudo失败,因为没有安装sudo,没有必要在docker中使用sudo,因为docker中的所有命令都以用户root的身份运行。

只需从第5行删除sudo。

如果要更新运行路径变量run:

PATH=$PATH:/directorytoadd/bin

这将把目录“/directorytoadd/bin”附加到当前路径。

公良文彬
2023-03-14

如果有人面临同样的问题,我是这样解决的

>

  • chmod x上传。sh

    git更新索引--chmod=x上传。sh(如果在更改权限之前将文件推送到远程分支,则必须执行此操作)

  •  类似资料:
    • 我可以运行在JAR中找到的SH文件吗? 我正在尝试从参考资料中提取文件并将其插入进程中。 当我尝试以这种方式运行时,我给了我一个错误 或者只是如果外部文件然后我可以执行它?

    • 注意2:在Jenkins/Configuration/under shell中,我提到了C:\cygwin\bin\mintty.exe 下面是输出 $C:\cygwin\bin\cygpath-w C:\cygwin\bin\mintty.exe[workspace]$C:\cygwin\bin\mintty.exe-xe D:\539707\tomcat-7.0.12\temp\hudson4

    • 问题内容: 我正在制作一个dockerfile来安装elasticsearch:6.5.4并将少量文件添加到所需位置,并运行一个名为test.sh的脚本,以便在Elasticsearch运行时在elasticsearch中创建新索引。 我不确定是否应该使用RUN,CMD或ENTRYPOINT来执行此操作。 我已经通过注释最后一行(包含RUN / CMD / ENTRYPOINT test.sh)成

    • 我编写docker文件是为了运行jar文件,而它并没有创建日志文件,请参阅下面的控制台是我的docker文件

    • 问题内容: 我的目录仅包含两个文件,并且: 在读 并且仅包含 在成功生成: 但是,如果尝试这样做,则会出现错误: 是什么原因造成的?(我记得以类似的方式在基于图像的脚本中运行脚本,所以也许它是Alpine特有的)? 问题答案: Alpine附带ash作为默认外壳,而不是。 所以你可以 有一个shebang将/ bin / bash定义为sayhello.sh的第一行,因此您的文件sayhello.

    • 对不起,英语不好。。 我有这样的php文件: 这是剧本: 现在当加载文件时。对于浏览器,脚本可以工作,但只执行wget和sed命令,cp不工作。。不复制文件!如果我手动运行脚本到终端(Debian 8),所有cmd都会执行。。。问题在哪里?谢谢约勒