bash docker:shell 脚本中的引用格式无效

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/45280858/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-18 16:19:26  来源:igfitidea点击:

docker: invalid reference format in shell script

bashshelldocker

提问by user1775718

I'm trying to create a shell script to run a docker container and am struggling. My script is like this:

我正在尝试创建一个 shell 脚本来运行一个 docker 容器并且正在努力。我的脚本是这样的:

#!/bin/bash

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

echo 

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 

When I run: bash run.sh cd2:0.0.50

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

I get: docker: invalid reference format: repository name must be lowercase.

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

Even if I do bash run.sh cd:0.0.50it still fails (echo $1results in cd2:0.0.50).

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

If I run docker run -it --rm -p 8080:8080 cd2:0.0.50from the command line it works...

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

Can anyone help?

任何人都可以帮忙吗?

回答by Raman Sailopal

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 

The image name should be after the -it parameter and so re arrange your run command.

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