如何在 docker 文件中 运行 一个 sh 脚本?
How to run an sh script in docker file?
当 运行 在 docker 文件中的 sh 脚本时,出现以下错误:
./upload.sh: 5: ./upload.sh: sudo: not found ./upload.sh: 21:
./upload.sh: Bad substitution
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
Docker 文件
FROM node:10-slim
EXPOSE 3000 4001
WORKDIR /prod/code
...
COPY . .
RUN ./upload.sh
RUN npm run build
CMD ./DockerRun.sh
有什么想法吗?
您正在使用的 docker 映像 (node:10-slim) 没有安装 sudo,因为此 docker 映像 运行s 以用户 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 运行s RUN ./upload.sh
它将 运行:
sudo chmod 755 upload.sh
在 docker 中使用 sudo 失败,因为未安装 sudo,不需要在 docker 中使用 sudo,因为 docker [=36] 中的所有命令=] 作为根用户。
只需删除第 5 行的 sudo。
如果您想更新 运行ning PATH 变量 运行:
PATH=$PATH:/directorytoadd/bin
这会将目录“/directorytoadd/bin”附加到当前路径。
如果有人遇到同样的问题,请参考我的解决方法
chmod +x upload.sh
git update-index --chmod=+x upload.sh
(如果您在更改权限之前将文件推送到远程分支,则必须这样做)
当 运行 在 docker 文件中的 sh 脚本时,出现以下错误:
./upload.sh: 5: ./upload.sh: sudo: not found ./upload.sh: 21:
./upload.sh: Bad substitution
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
Docker 文件
FROM node:10-slim
EXPOSE 3000 4001
WORKDIR /prod/code
...
COPY . .
RUN ./upload.sh
RUN npm run build
CMD ./DockerRun.sh
有什么想法吗?
您正在使用的 docker 映像 (node:10-slim) 没有安装 sudo,因为此 docker 映像 运行s 以用户 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 运行s RUN ./upload.sh
它将 运行:
sudo chmod 755 upload.sh
在 docker 中使用 sudo 失败,因为未安装 sudo,不需要在 docker 中使用 sudo,因为 docker [=36] 中的所有命令=] 作为根用户。
只需删除第 5 行的 sudo。
如果您想更新 运行ning PATH 变量 运行:
PATH=$PATH:/directorytoadd/bin
这会将目录“/directorytoadd/bin”附加到当前路径。
如果有人遇到同样的问题,请参考我的解决方法
chmod +x upload.sh
git update-index --chmod=+x upload.sh
(如果您在更改权限之前将文件推送到远程分支,则必须这样做)