2017-04-18 3 views
1

Ich baue ein Docker-Image mit mehreren Buildargs und frage mich, ob es möglich ist, sie als Datei an docker build zu übergeben, genauso wie --env-file an docker run übergeben werden kann. Die Env-Datei wird automatisch von docker run analysiert und die Variablen im Container verfügbar gemacht.Entspricht -env-Datei für Build-Arg?

Ist es möglich, eine Datei mit Build-Argumenten auf die gleiche Weise anzugeben?

Antwort

2

Es gibt keine solche Option, zumindest für jetzt. Aber wenn Sie zu viele Build args haben und wollen, dass es in einer Datei speichern, können Sie es archivieren wie folgt:

  1. Speichern Sie die folgende Shell buildargs.sh, machen es ausführbar und legen Sie sie in Ihrem PATH:

    #!/bin/bash 
    awk '{ sub ("\\\\$", " "); printf " --build-arg %s", $0 } END { print "" }' [email protected] 
    
  2. Bauen Sie Ihr Bild mit argfile wie:

    docker build $(buildargs.sh argfile) -t your_image . 
    
+0

Dies scheint ein "Docker build" erfordert genau 1 Argument zurück: 'Docker build $ (./ buildargs.sh test_args) -t test_build -f Dockerfile .' Wo ist mein test_args nur ' ist - -build argument PORT = 4000' EDIT: vergiss müssen sie durch die Linie und ohne die --build argument getrennt sein: '' ' PORT = 4000 STUFF = HALLO FOO = BAR ' '' –

0

Dieser Code ist für Build-arg ist sicher, die Leerzeichen und Sonderzeichen enthalten:

for arg in buildarg1 buildarg2 ; do opts+=(--build-arg "$arg") ; done 

... 

docker run ... "${opts[@]}" 

Ersetzen Sie einfach buildarg1 und so weiter mit Ihrem Build-ARG entkommen.