Bash 使用docker Run在任何给定文件上运行带参数的shell脚本
我是码头工人的初学者。我用它运行了一个带有docker run的shell脚本,效果很好。然而,我正在尝试将shell脚本应用于当前工作目录中的文件,Dockerfile和脚本位于该目录中 My shell脚本-给定一个文件作为参数,返回其名称和行数:Bash 使用docker Run在任何给定文件上运行带参数的shell脚本,bash,shell,docker,Bash,Shell,Docker,我是码头工人的初学者。我用它运行了一个带有docker run的shell脚本,效果很好。然而,我正在尝试将shell脚本应用于当前工作目录中的文件,Dockerfile和脚本位于该目录中 My shell脚本-给定一个文件作为参数,返回其名称和行数: #!/bin/bash echo $1 wc -l $1 Dockerfile: FROM ubuntu COPY ./file.sh / CMD /bin/bash file.sh 然后构建并运行: docker build -t test
#!/bin/bash
echo $1
wc -l $1
Dockerfile:
FROM ubuntu
COPY ./file.sh /
CMD /bin/bash file.sh
然后构建并运行:
docker build -t test .
docker run -ti test /file.sh text_file
这就是我得到的:
text_file
wc: text_file: No such file or directory
我不知道为什么第二行不起作用,为什么找不到文件。我不想将文本文件复制到容器中。理想情况下,我希望在当前工作目录中的任何文件上从docker容器运行脚本。
任何帮助都将不胜感激。
谢谢 您正在构建包含脚本
/file.sh
的Docker映像。但是,Docker容器不包含(或不知道)作为参数传递的文件text\u file
为了让Docker容器知道它,您必须在运行容器时使用它
docker run --rm -it -v "$PWD"/text_file:/text_file test /file.sh /text_file
为了检查其他文件,您只需在mount和参数中交换text\u file
笔记
除此之外,我可能会建议一些更多的改进来提升你的形象
ubuntu
作为基本映像。你可能会感觉很好,甚至更加专注。不要忘记使用标签,以便随着时间的推移强制执行完全相同的行为FROM alpine:3.10
WORKDIR /tmp
COPY file.sh /usr/local/bin/wordcount
ENTRYPOINT /usr/local/bin/wordcount
CMD file
docker run --rm -it -v "PWD"/text_file:/tmp/file test