Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 我在运行bash脚本时遇到问题,该脚本在交互模式下打开docker容器并执行一些命令_Spring_Bash_Docker_Tomcat - Fatal编程技术网

Spring 我在运行bash脚本时遇到问题,该脚本在交互模式下打开docker容器并执行一些命令

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

我正在使用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 *

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将使脚本成为容器的一部分。然后,您不需要交互模式,您可以在有人启动容器时默认执行它。