Dockerfile if else condition with external arguments

1 min readFeb 5, 2022

What is the problem ?

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)

and build with this argument.

docker build -t my_docker . --my_arg=42

The best solution for the above problem is…

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


docker build -t my_docker .

Know more solutions for the same problem with different ways are here SyntaxFix




Curated Solutions On Popular Questions — On All Programming Languages, Cloud Computing, Tools etc