This github discussion was found. It seems that it is allowed to build a docker image while a certain ENV does not have been set.
How to ensure that the docker build fails if an ENV has not been set?
DevOps Stack Exchange is a question and answer site for software engineers working on automated testing, continuous delivery, service integration and monitoring, and building SDLC infrastructure. It only takes a minute to sign up.
Sign up to join this communityThis github discussion was found. It seems that it is allowed to build a docker image while a certain ENV does not have been set.
How to ensure that the docker build fails if an ENV has not been set?
An empty of non existent environment variable is the same thing, there's no reason Docker do not allow you to pass an empty variable as it could be a valid use case.
It's up to your responsibility to ensure needed environment variables are there and give an error message back when not.
Something along the line of:
RUN 'if [ -z "$AN_ENV_VAR" ]; then echo 'Environment variable AN_ENV_VAR must be specified. Exiting.'; exit 1; fi'
You can play with the exit code to automate some actions on failure around your docker build
command.
To error out the build, just add the following with your env variable in the docker-compose file.
${ENV_VAR?Variable ENV_VAR not set}
example:
image: consul:${TAG?Variable TAG not set}
If the if
command construct is very complex for you, you can always simply it like
RUN [ -n "$VAR" ]
This asserts the variable value length is nonzero. If it's empty or not set it'll exit with 1. This is also same as running RUN test -n "$VAR"
I see this error message on my machine
The command '/bin/sh -c [ -n "$VAR" ]' returned a non-zero code: 1
RUN 'if [ -Z $ENV ]; then exit 1; fi'
? – Tensibai Jul 17 '17 at 9:24