Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Docker Error - "jq: error: Cannot iterate over null"

So I'm trying to deploy a dockerfile on Elastic Beanstalk, but I can't get past this error - "jq: error: Cannot iterate over null".

Successfully built [myContainerId] Successfully built aws_beanstalk/staging-app [2015-01-29T10:35:59.494Z] INFO  [16343] - [CMD-AppDeploy/AppDeployStage0/AppDeployPreHook/04run.sh] : Starting activity... [2015-01-29T10:36:05.507Z] INFO  [16343] - [CMD-AppDeploy/AppDeployStage0/AppDeployPreHook/04run.sh] : Activity execution failed, because: command failed with error code 1: /opt/elasticbeanstalk/hooks/appdeploy/pre/04run.sh jq: error: Cannot iterate over null Docker container quit unexpectedly after launch: Docker container quit unexpectedly on Thu Jan 29 10:36:05 UTC 2015:. Check snapshot logs for details. (Executor::NonZeroExitStatus) at /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/executor-1.0/lib/executor/exec.rb:81:in `sh' from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/executor-1.0/lib/executor.rb:15:in `sh' from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.1/lib/elasticbeanstalk/executable.rb:63:in `execute!' from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.1/lib/elasticbeanstalk/hook-directory-executor.rb:29:in `block (2 levels) in run!' from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.1/lib/elasticbeanstalk/activity.rb:169:in `call' from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.1/lib/elasticbeanstalk/activity.rb:169:in `exec' 

There aren't any other errors in the logs. My Docker container is successfully built, so it seems unlikely the error is coming from there.

My Dockerrun.aws.json looks like :

   {   "AWSEBDockerrunVersion": "1",   "Image": {     "Name": "blah",     "Update": "false"   },   "Ports": [     {       "ContainerPort": "8080"     }   ] } 

I'm banging my head against a wall with this one, nothing I change seems to affect it and googling hasn't been of any help.

Any ideas?

like image 574
YYZ Avatar asked Jan 29 '15 11:01

YYZ


1 Answers

If others are looking for how to avoid the Cannot iterate over null error in their own jq commands, add a question mark after []. For example

echo '{   "AWSEBDockerrunVersion": "1",   "Image": {     "Name": "blah",     "Update": "false"   },   "Ports": [     {       "ContainerPort": "8080"     }   ] }'|jq -c '.Volumes[]?|[.HostDirectory,.ContainerDirectory]' 

where [] was replaced with []? does not display the error.

From the manual:

.[]?     Like .[], but no errors will be output if . is not an array or object. 
like image 191
nisetama Avatar answered Sep 21 '22 20:09

nisetama