37

そのため、Elastic Beanstalk に dockerfile をデプロイしようとしていますが、「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'

ログに他のエラーはありません。私の Docker コンテナーは正常にビルドされているため、そこからエラーが発生する可能性は低いと思われます。

私の Dockerrun.aws.json は次のようになります。

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

私はこれで頭を壁にぶつけています。私が変更したことは何も影響していないようで、グーグルは何の助けにもなりませんでした。

何か案は?

4

4 に答える 4

63

Cannot iterate over null他のユーザーが自分のコマンドでエラー を回避する方法を探している場合は、 のjq後に疑問符を追加して[]ください。例えば

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

[]に置き換えられた場所は[]?、エラーを表示しません。

マニュアルから:

.[]?
    Like .[], but no errors will be output if . is not an array or object.
于 2016-04-07T19:25:42.583 に答える
13

Docker プラットフォームへの Elastic Beanstalk デプロイは、さまざまな理由により、Elastic Beanstalk デプロイのさまざまなフェーズで「jq: error ... Cannot iterate over null...」というエラー メッセージで失敗する可能性があることに注意してください。これには、起動時のアプリケーション (Docker コンテナー) の終了またはエラーが含まれる場合があります。

この特定の報告された問題の発生は、Dockerrun.aws.json の「Volumes」プロパティの欠落に固有のものである可能性がありますが、問題ではない可能性があります。このエラーが発生した場合、問題を診断する最善の方法は、完全な EB ログをダウンロードし、次のログ ファイル /var/log/eb-activity.log で診断を確認することです。

アプリケーションが起動に失敗したために問題が発生した場合は、/var/log/eb-docker/containers/eb-current-app/unexpected-quit.log にエラーが見つかります。

于 2016-03-09T11:09:51.063 に答える