无法将使用docker run的命令行parameter passing给Shell脚本文件

使用的命令:

sudo docker run -it -p 80:9000 c822030cc576 sh /app/test/play/docker-entrypoint.sh /app/test/play/servers/server01/play/conf/override.conf /app/log/nflott/play true dev 

我的参数:

 $2:/app/test/play/servers/server01/play/conf/override.conf $3:/app/log/nflott/play $4:true $5:dev Which needs to be passed to the docker-entrypoint.sh Script 

我的entrypoint.sh脚本代码:

  echo "CONFIG:$2 echo "LOG_HOME:$3" echo "SKIP_LOGFILE:$4" echo "LOG_ENV:$5 /app/test/play/servers/server01/play/bin/apiserver \ -Dconfig.file=/app/test/play/servers/server01/play/conf/override.conf \ -Dpidfile.path=/app/test/play/servers/server01/RUNNING_PID \ -DLOG_HOME=$3 \ -DSKIP_LOGFILE=$4 \ -DLOG_ENV=$5 \ Error: CONFIG:/app/test/play/servers/server01/play/conf/override.conf LOG_HOME:/app/log/nflott/play SKIP_LOGFILE:true LOG_ENV:dev Bad root server path: /app/nflott/play/docker-entrypoint.sh 

似乎echo声明后,我的参数没有得到传递到逻辑块和它的失败与根服务器path问题。 如何解决错误的根目录path错误,并运行我的脚本?

恕我直言,他们可能会得到通过泊坞窗命令的参数。 您可以尝试使用-e docker选项将它们作为一些命名为env的variables传递给Docker容器,然后在脚本中进行访问。

您可以使用特殊的--entrypoint标志并在cmd传递参数:

 sudo docker run -it -p 80:9000 --entrypoint /app/test/play/docker-entrypoint.sh c822030cc576 /app/test/play/servers/server01/play/conf/override.conf /app/log/nflott/play true dev