2017-07-24 5 views
2

Ich versuche ein Shell-Skript zu erstellen, um einen Andock-Container auszuführen und zu kämpfen. Mein Skript ist wie folgt:Andockfenster: ungültiges Referenzformat im Shell-Skript

#!/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 

Wenn ich laufen: bash run.sh cd2:0.0.50

ich: docker: invalid reference format: repository name must be lowercase.

Auch wenn ich bash run.sh cd:0.0.50 es immer noch nicht (echo $1 Ergebnisse in cd2:0.0.50).

Wenn ich docker run -it --rm -p 8080:8080 cd2:0.0.50 von der Kommandozeile ausführen es funktioniert ...

Kann jemand helfen?

+0

Ich würde vorschlagen, dass die -e-Flags nicht korrekt analysiert werden und die Variable NOD_PATH als Bildname angezeigt wird. Was passiert, wenn Sie die -e Daten auslesen? –

+0

@RamanSailopal Hmmm, es funktioniert ... – user1775718

+0

Sie müssen nur Docker Run-Befehl neu anordnen. Ich habe eine Antwort geschrieben –

Antwort

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 

Der Bildname sollte nach dem Parameter -it stehen und so den Befehl run anordnen.

+1

Schließen, es benötigt Leerzeichen vor den \ Zeichen, sonst gibt es in der Befehlszeile kein Lücken. Wenn Sie bearbeiten, werde ich dies als Antwort akzeptieren. ;) – user1775718

+0

Ich habe die Antwort geändert –

Verwandte Themen