2017-07-24 37 views
2

我正尝试创建一个shell脚本来运行码头集装箱,并且挣扎着。我的脚本是这样的:码头:外壳脚本中的无效参考格式

#!/bin/bash 

if [ "$1" == "" ]; then 
    echo "Usage > run.sh IMAGE NAME" 
    echo 
    echo "i.e. ./build.sh cd2:0.0.49" 
    exit 
fi 

echo $1 

docker run -it --rm \ 
-e NODE_PATH='./src'\ 
-e NODE_HOST='0.0.0.0'\ 
-e NODE_ENV='production'\ 
-e DOCKER=true\ 
-e PORT='8080'\ 
-e STAGING=true\ 
-e SENDGRID_API_KEY='<redacted>'\ 
-p 8080:8080 $1 

当我运行:bash run.sh cd2:0.0.50

我得到:docker: invalid reference format: repository name must be lowercase.

即使我做bash run.sh cd:0.0.50仍然失败(echo $1结果cd2:0.0.50)。

如果我运行从它的工作原理命令行docker run -it --rm -p 8080:8080 cd2:0.0.50 ...

谁能帮助?

+0

我会建议它不正确解析-e标志并将NOD_PATH变量看作图像名称。当你把-e数据拿出来会发生什么? –

+0

@RamanSailopal嗯,它的工作原理... – user1775718

+0

你只需要重新安排你的码头运行命令。我已经发布了一个答案 –

回答

5
docker run \ 
-e NODE_PATH='./src' \ 
-e NODE_HOST='0.0.0.0' \ 
-e NODE_ENV='production' \ 
-e DOCKER=true \ 
-e PORT='8080' \ 
-e STAGING=true \ 
-e SENDGRID_API_KEY='<redacted>' \ 
-p 8080:8080 --rm -it $1 

图像名称应该在-it参数之后,因此重新安排您的运行命令。

+1

关闭,它需要\字符之前的空格,否则命令行中不会有间隙。如果你编辑,我会接受这个答案。 ;) – user1775718

+0

我修改了答案 –