Esiste un modo per rendere obbligatorio un argomento di costruzione durante docker build
? Il comportamento previsto sarebbe che la compilazione fallisse se manca l'argomento.Come rendere obbligatorio un argomento di build durante la creazione di Docker?
Ad esempio, per i seguenti Dockerfile:
FROM ubuntu
ARG MY_VARIABLE
ENV MY_VARIABLE $MY_VARIABLE
RUN ...
vorrei che la build per riuscire a ARG MY_VARIABLE
quando costruito con docker build -t my-tag .
e passare quando costruito con docker build -t my-tag --build-arg MY_VARIABLE=my_value .
.
Esiste un modo per ottenere questo comportamento? L'impostazione di un valore predefinito non è davvero un trucco nel mio caso.
(sto correndo Docker 1.11.1
su darwin/amd64
.)
EDIT: Un modo di fare che mi viene in mente è quello di eseguire un comando che fallisce quando MY_VARIABLE
è vuota, ad esempio:
FROM ubuntu
ARG MY_VARIABLE
RUN test -n "$MY_VARIABLE"
ENV MY_VARIABLE $MY_VARIABLE
RUN ...
ma non sembra essere una soluzione molto idiomatica al problema in questione.
È un po 'strano che fallirà se viene passato un argomento che non è definito ma non viceversa, ma sembra che funzioni. È possibile eseguire uno script "test.sh" come passaggio in fase avanzata nel file Docker che controlla una serie di condizioni e le gestisce in modo appropriato. A seconda della complessità, potrebbe essere più facile gestirlo come un file separato. Se si tratta solo di uno o due ARG, il metodo in-line potrebbe in effetti essere il migliore. – ldg