2015-01-29 5 views
22

तो मैं लोचदार बीनस्टॉक पर एक डॉकरफ़ाइल तैनात करने की कोशिश कर रहा हूं, लेकिन मुझे यह त्रुटि नहीं मिल सकती है - "jq: त्रुटि: शून्य पर पुनरावृत्ति नहीं कर सकता"।डॉकर त्रुटि - "jq: त्रुटि: शून्य पर पुन: सक्रिय नहीं हो सकता है"

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' 

लॉग में कोई अन्य त्रुटियां नहीं हैं। मेरा डॉकर कंटेनर सफलतापूर्वक बनाया गया है, इसलिए ऐसा लगता है कि वहां से त्रुटि आ रही है।

मेरे Dockerrun.aws.json लगता है:

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

मैं इस एक के साथ एक दीवार के खिलाफ मेरे सिर पीटने रहा हूँ, कुछ भी नहीं मैं बदलने को प्रभावित करने लगता है और Googling किसी भी मदद के नहीं किया गया है।

कोई विचार?

उत्तर

22

समस्या यह है कि आपकी Dockerrun.aws.json फ़ाइल Volumes संपत्ति अनुपलब्ध है।

04pre.sh स्क्रिप्ट JSON फ़ाइल से पूछताछ करने के लिए jq उपकरण का उपयोग करता है।

$ jq -c '.Volumes[] | [.HostDirectory, .ContainerDirectory]' < Dockerrun.aws.json 
jq: error: Cannot iterate over null 

एक खाली "वॉल्यूम" सरणी निर्दिष्ट त्रुटि को हल करना चाहिए:

विशेष रूप से, यह अपनी फ़ाइल पर निम्न आदेश, जो त्रुटि से प्रभावित होती है चलाता है।

10

ध्यान दें कि डॉकर प्लेटफ़ॉर्म पर एक लोचदार बीनस्टॉक परिनियोजन "jq: त्रुटि ... शून्य पर पुन: सक्रिय नहीं हो सकता है ..." कई अलग-अलग कारणों से लोचदार बीनस्टॉक परिनियोजन के विभिन्न चरणों में त्रुटि संदेश। इसमें स्टार्टअप पर छोड़ने या त्रुटि करने के लिए आपका एप्लिकेशन (डॉकर कंटेनर) शामिल हो सकता है।

हालांकि समस्या की यह विशेष रिपोर्ट घटना Dockerrun.aws.json में अनुपलब्ध "वॉल्यूम" संपत्ति के लिए विशिष्ट हो सकती है, आपकी समस्या नहीं हो सकती है। अगर आपको यह त्रुटि मिलती है, तो समस्या का निदान करने के लिए सबसे अच्छा तरीका है अपने पूर्ण ईबी लॉग डाउनलोड करना और निम्न लॉग फ़ाइल /var/log/eb-activity.log में निदान की जांच करना।

यदि समस्या आपके एप्लिकेशन द्वारा स्टार्टअप में विफल होने के कारण हुई थी तो आपको त्रुटि /var/log/eb-docker/containers/eb-current-app/unexpected-quit.log में त्रुटि मिलेगी।

+3

इस त्रुटि संदेश के वैकल्पिक कारणों के बारे में कुछ विचार देने के लिए: मेरा स्मृति स्मृति से बाहर होने के कारण था। –

18

दूसरों कैसे अपने स्वयं के jq आदेशों में Cannot iterate over null त्रुटि से बचने के, [] के बाद एक प्रश्न चिह्न जोड़ें के लिए देख रहे हैं। उदाहरण

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. 
+0

यह jq 1.3 में समर्थित नहीं है; दुर्भाग्यवश, उबंटू 14.04 जहाजों 1.3। किसी को jq 1.3 के लिए एक समाधान पता है? – JDS

+0

हां @nisetama – Nobody

+0

@JDS @nobody के आसपास कोई काम करता है, जवाब देखें [यहां] (https://stackoverflow.com/a/42622937/267455) - चूंकि 'jq' एक एकल है, स्वयं निहित बाइनरी है, आप बस एक नई रिलीज से एक के साथ अपने एपीटी संस्करण को ओवरराइट करें, जैसे कि [संस्करण 1.5] (https://github.com/stedolan/jq/releases/tag/jq-1.5) –

0

मेरे मामले अंक में COPY अनुदेश के बजाय Dockerfile में ADD संपन्न हुई थी। इसे बदलना मुद्दा तय किया।

संबंधित मुद्दे