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

时间:2019-12-26 00:00:10

标签: docker sh

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

  

./ upload.sh:5:./upload.sh:sudo:找不到./upload.sh:21:
  ./upload.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 个答案:

答案 0 :(得分:1)

您正在使用的docker映像(node:10-slim)上没有安装sudo,因为此docker映像以root用户身份运行进程:

docker run -it node:10-slim bash root@68dcffceb88c:/# id uid=0(root) gid=0(root) groups=0(root) root@68dcffceb88c:/# which sudo root@68dcffceb88c:/#

当Dockerfile运行RUN ./upload.sh时,它将运行: sudo chmod 755 upload.sh

由于未安装sudo,所以在docker内部使用sudo失败,由于在docker内部的所有命令都以root用户身份运行,因此无需在docker内部使用sudo。

只需从第5行删除sudo。

如果要更新正在运行的PATH变量,请运行:

PATH=$PATH:/directorytoadd/bin

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

答案 1 :(得分:1)

如果有人遇到相同的问题,请点击这里我如何解决

  1. ID : KEY : VALUE Emp1 : 5001 : 20 Emp1 : 5002 : 22 Emp1 : 6001 : 0 Emp1 : 6002 : 2

  2. chmod +x upload.sh(如果在更改文件权限之前将文件推送到远程分支,则必须提供)