Spring 我在运行bash脚本时遇到问题,该脚本在交互模式下打开docker容器并执行一些命令
我正在使用next命令以交互模式打开docker容器,并在与该容器的bash会话中使用以下命令Spring 我在运行bash脚本时遇到问题,该脚本在交互模式下打开docker容器并执行一些命令,spring,bash,docker,tomcat,Spring,Bash,Docker,Tomcat,我正在使用next命令以交互模式打开docker容器,并在与该容器的bash会话中使用以下命令 docker run -v /scriptsIA:/scriptsIA -v /opt/tomcat/webapps/PokeTrainer/imgIA:/imgsIA -it dbmobilelife/docker-python-opencv-tesseract bash cd /scriptsIA/ python from SegmentarImagen import * extrae
docker run -v /scriptsIA:/scriptsIA -v /opt/tomcat/webapps/PokeTrainer/imgIA:/imgsIA -it dbmobilelife/docker-python-opencv-tesseract bash
cd /scriptsIA/
python
from SegmentarImagen import *
extraerNombreUsuarioNiveldeUnaFoto("/imgsIA/andres.jpg")
exit()
exit
我尝试创建一个bash脚本,如下所示:
#!/bin/bash
docker run -v /scriptsIA:/scriptsIA -v /opt/tomcat/webapps/PokeTrainer/imgIA:/imgsIA -it dbmobilelife/docker-python-opencv-tesseract bash
cd /scriptsIA/
python
from SegmentarImagen import *
extraerNombreUsuarioNiveldeUnaFoto("/imgsIA/andres.jpg")
exit()
exit
然而,当我执行这个bash脚本时,我得到的只是以下错误:
[root@poketrainer/]sh scriptIA.sh docker:来自的错误响应
守护进程:OCI运行时创建失败:container\u linux.go:344:正在启动
容器进程导致exec:\bash\r\:找不到可执行文件
在$PATH中:未知:不存在董事会
scriptIA.sh:línea 4:$'python\r':不允许使用
scriptIA.sh:línea 5:from:no se encontroóla orden scriptIA.sh:línea
6:sintáctico cerca del elemento inesperado错误
/imgsIA/andres.jpg''criptIA.sh:línea 6:
额外的授权/授权/imgsIA/andres.jpg
如何执行上面解释的bash脚本而不出错?您的脚本存在多个问题: 这些错误\r\n包括: 启动容器进程导致exec:\bash\r \:在$PATH中找不到可执行文件:未知 其他类似的错误也与此相关:表示脚本中存在Windows回车符\r-它可能是在Windows上编写并装载在VM中的,或者编辑器以某种方式添加了这些字符请参见。Linux只需要命令的\n和\ras部分。尝试在文件上运行dos2unix,或确保没有特殊字符 此外,脚本还有几个问题: 您正在尝试运行docker exec,它运行一个bash命令,并运行一个python脚本。这可以简化一点,见下文 要运行Python,可能不需要先运行bash,可以直接运行Python命令 如果要运行2个Python命令,则需要换行。在运行简单的Python命令之前,最好创建一个Python脚本并将其装载到映像中。 最好使用而不是使用cd命令来设置工作目录 不需要退出,也不需要退出,因为一旦没有更多的指令要执行,它将隐式执行 鉴于上述情况,您可以: 运行单个命令,如
docker exec [...] -it -w /scriptsIA dbmobilelife/docker-python-opencv-tesseract \
echo -e "from SegmentarImagen import *\nextraerNombreUsuarioNiveldeUnaFoto("/imgsIA/andres.jpg")" | python
在其中,使用-w设置工作目录,并通过echo和管道传递其内容来运行Python命令,但没有空间使用正确的Python语法
创建myscript.py脚本,例如:
from SegmentarImagen import *
extraerNombreUsuarioNiveldeUnaFoto("/imgsIA/andres.jpg")
然后将该脚本装入容器并运行一个简单的python命令:
docker exec [...] -it -w /scriptsIA -v /path/to/myscript.py:/myscript.py \
dbmobilelife/docker-python-opencv-tesseract \
python /myscript.py
注意:[…]用于-v/scriptsIA:/scriptsIA-v/opt/tomcat/webapps/PokeTrainer/imgIA:/imgsIA卷装载,我为了简化而剪切了该卷装载I将使脚本成为容器的一部分。然后,您不需要交互模式,您可以在有人启动容器时默认执行它。