0

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?

  • 2
    RUN 'if [ -Z $ENV ]; then exit 1; fi' ? – Tensibai Jul 17 '17 at 9:24
  • Yes, but I would like to see that docker build itself denies it – 030 Jul 17 '17 at 9:26
  • Why that ? 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 very valid use case... It's up to your responsibility to ensure needed environment variables are there and give an error message back when not. – Tensibai Jul 17 '17 at 9:30
  • 1
    @Tensibai perhaps you could combine both comments and post it as an answer so it could be accepted – 030 Jul 19 '17 at 7:09
3

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.

| improve this answer | |
1

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}
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.