2017-07-24 41 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

我修改了答案 –