Search code examples
dockerdockerfile

Dockerfile if else condition with external arguments


I have dockerfile

FROM centos:7
ENV foo=42

then I build it

docker build -t my_docker .

and run it.

docker run -it -d  my_docker

Is it possible to pass arguments from command line and use it with if else in Dockerfile? I mean something like

FROM centos:7
if (my_arg==42)
     {ENV=TRUE}
else:
     {ENV=FALSE}

and build with this argument.

 docker build -t my_docker . --my_arg=42

Solution

  • It might not look that clean but you can have your Dockerfile (conditional) as follow:

    FROM centos:7
    ARG arg
    RUN if [[ -z "$arg" ]] ; then echo Argument not provided ; else echo Argument is $arg ; fi
    

    and then build the image as:

    docker build -t my_docker . --build-arg arg=45

    or

    docker build -t my_docker .