如何在Docker文件中运行一个sh脚本?

10 浏览
0 Comments

如何在Docker文件中运行一个sh脚本?

在Docker文件中运行一个sh脚本时,我遇到了以下错误:\n

\n./upload.sh: 5: ./upload.sh: sudo: 未找到 ./upload.sh: 21:
\n ./upload.sh: 错误的替换\n

\n

sudo chmod 755 upload.sh # 第5行
version=$(git rev-parse --short HEAD)
echo "version $version"
echo "正在上传文件"
for path in $(find public/files -name "*.txt"); do
  echo "路径 $path"
  WORDTOREMOVE="public/" 
  echo "要删除的词 $WORDTOREMOVE"
  # 引起错误的原因
  newpath=${path//$WORDTOREMOVE/} # 第21行
  echo "新路径 $path"
  url=http://localhost:3000/${newpath}
  ...
  echo "正在上传文件"
  ...
done

\nDocker文件\n

FROM node:10-slim
EXPOSE 3000 4001
WORKDIR /prod/code
...
COPY . .
RUN ./upload.sh
RUN npm run build
CMD ./DockerRun.sh

\n有什么想法吗?

0
0 Comments

问题的原因是使用的docker镜像(node:10-slim)上没有安装sudo命令。因为该docker镜像以root用户身份运行进程,所以不需要在docker内部使用sudo命令。

解决方法是删除第5行的sudo命令。如果想要更新运行中的PATH变量,可以运行PATH=$PATH:/directorytoadd/bin命令,这将在当前路径后添加"/directorytoadd/bin"目录。如果想要从路径中移除WORDTOREMOVE子字符串,可以使用相应的方法进行处理。

0
0 Comments

如果有人遇到相同的问题,这是我如何解决的:

  1. chmod +x upload.sh
  2. git update-index --chmod=+x upload.sh(如果在更改权限之前将文件推送到远程分支,则此步骤是必需的)

问题的出现原因:在Docker文件中运行.sh脚本时,可能会遇到权限问题,导致脚本无法执行。

解决方法:通过使用命令chmod +x为.sh文件添加可执行权限,然后使用git update-index --chmod=+x命令更新文件的权限。这样,在Docker文件中运行.sh脚本时就不会再出现权限问题了。

0