2016-11-04 2 views
2

Ich muss ein Argument beim Ausführen von Docker Image geben, die eine Zahl von 0-3 sein wird.Verschiedene Argumente übergeben, wenn Docker Image mehrmals ausgeführt wird

Dockerfile hat die folgenden:

WORKDIR "mydir/build" 
CMD ./maker oneapp > /artifacts/oneapp_$1.log ; ./maker twoapp > /artifacts/twoapp_$1.log ; ./maker -j13 threeapp > /artifacts/threeapp_$1.log 

Ich werde die gleiche Docker Bild mehrere Male ausgeführt werden, so muss ich anmeldet/Artefakte mit _0, _1, _2, _3, gegebenenfalls beigefügten gespeichert werden.

Ich habe versucht, dies in Docker-Datei zu halten, aber nicht diese vollständige Zeile als Argument beim Ausführen von Docker übergeben möchten.

ENTRYPOINT ["/bin/bash"]

./maker oneapp > /artifacts/oneapp_$1.log ; ./maker twoapp > /artifacts/twoapp_$1.log ; ./maker -j13 threeapp > /artifacts/threeapp_$1.log

Ist es möglich, dies zu tun? Was muss ich in Dockerfile ändern, um das zu tun, was ich will?

Antwort

3

Einfach Ihren Parameter als ENV einspeisen.

Deklarieren Sie eine ENV in your Dockerfile.

ENV suffix 0 
./maker oneapp > /artifacts/oneapp_${suffix}.log 

The environment variables set using ENV will persist when a container is run from the resulting image.
You can view the values using docker inspect , and change them using docker run --env <key>=<value> .

Auf diese Weise können Sie, dass ENV on docker run und profitieren von ihrem Wert im laufenden Behälter erklären.

the operator can set any environment variable in the container by using one or more -e flags, even overriding those mentioned above, or already defined by the developer with a Dockerfile ENV:

In Ihrem Fall zum Beispiel:

docker run -e suffix=2 <image_name> 
+0

Das ist schön und elegant Ansatz. – Rao

+0

Ich habe ENV count 0 und CMD ./maker oneapp>/artifacts/oneapp_${suffix}.log in Dockerfile hinzugefügt, aber diesen Fehler zu sehen: root @ onl-dev:/data/sept15/target-docker # docker run -it target -e count = 0 docker: Fehler Antwort vom Daemon: oci Laufzeitfehler: exec: "-e": Die ausführbare Datei wurde nicht in $ PATH gefunden. –

+0

@Sweety yes: 'docker run' benötigt einen Image-Namen zum Ausführen (Erstellen eines Containers daraus). Dein Befehl hat keinen Image-Namen. – VonC

Verwandte Themen