在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
有什么主意吗?
答案 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)
如果有人遇到相同的问题,请点击这里我如何解决
ID : KEY : VALUE
Emp1 : 5001 : 20
Emp1 : 5002 : 22
Emp1 : 6001 : 0
Emp1 : 6002 : 2
chmod +x upload.sh
(如果在更改文件权限之前将文件推送到远程分支,则必须提供)