2015-07-18 3 views
8

Я получаю загадочную ошибку при попытке обновить конфигурацию одноконтейнерного приложения Docker. У кого-нибудь есть идея, что может вызвать это, или как его отладить?Ошибка докеры с эластичным бобовым стеклом

ERROR [3009] : Command execution failed: 
    [CMD-ConfigDeploy/ConfigDeployStage0/ConfigDeployPreHook/00run.sh] 
    command failed with error code 1: 
    /opt/elasticbeanstalk/hooks/configdeploy/pre/00run.sh 
    docker: "tag" requires 2 arguments. See 'docker tag --help'. 
    (ElasticBeanstalk::ActivityFatalError) 

ответ

8

Я видел это раньше и считаю, что это происходит, когда контейнер Docker не удалось построить. Сбой команды - это тот, который запускает ваш контейнер, и он не работает (IIRC), потому что он не может найти контейнер с предыдущего этапа сборки. Что следует предпринять:

  • Успешен ли контейнер Docker с eb local? (https://aws.amazon.com/blogs/aws/run-docker-apps-locally-using-the-elastic-beanstalk-eb-cli/)
  • Попробуйте проверить eb-activity.log на наличии ошибок в процессе сборки
  • Прекратить экземпляр EC2 или восстановить окружающую среду EB (иногда небольшие экземпляры Убирайтесь объемом памяти ошибок, предотвращение дальнейших развертываний)
4

It может произойти, если ваше приложение не сможет успешно работать при первом развертывании. Просто начал эту проблему самостоятельно.

Посмотрите на /var/log/eb-activity.log на сервере ... вы можете увидеть что-то вроде:

[2015-07-23T00:19:11.015Z] INFO [2624] - [CMD-Startup/StartupStage1/AppDeployEnactHook/00run.sh] : Starting activity...

[2015-07-23T00:19:17.506Z] INFO [2624] - [CMD-Startup/StartupStage1/AppDeployEnactHook/00run.sh] : Activity execution failed, because: jq: error: Cannot iterate over null aca80d7accfe4800ff04992e2f89a1e05689423d286deee31b53bf470ce89afb Docker container quit unexpectedly after launch: bleBeanFactory.java:942) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:533) ... 93 more. Check snapshot logs for details. (ElasticBeanstalk::ExternalInvocationError) caused by: jq: error: Cannot iterate over null aca80d7accfe4800ff04992e2f89a1e05689423d286deee31b53bf470ce89afb Docker container quit unexpectedly after launch: bleBeanFactory.java:942) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:533) ... 93 more. Check snapshot logs for details. (Executor::NonZeroExitStatus)

[2015-07-23T00:19:17.506Z] INFO [2624] - [CMD-Startup/StartupStage1/AppDeployEnactHook/00run.sh] : Activity failed.

[2015-07-23T00:19:17.507Z] INFO [2624] - [CMD-Startup/StartupStage1/AppDeployEnactHook] : Activity failed.

[2015-07-23T00:19:17.507Z] INFO [2624] - [CMD-Startup/StartupStage1] : Activity failed.

[2015-07-23T00:19:17.507Z] INFO [2624] - [CMD-Startup] : Completed activity. Result: Command CMD-Startup(stage 1) failed.

Далее, посмотрите на/вар/Журнал/ЕВ-докер/container/eb-current-app Если вы видите неожиданный-quit.log, тогда он должен содержать ошибки, которые ваше приложение регистрировало, когда оно пыталось, безуспешно, для запуска.

К сожалению, в моем случае он не запускается, поскольку отсутствует переменная среды. Однако AWS не позволяет мне обновлять конфигурацию, в то время как beanstalk находится в этом состоянии. И я не могу указать переменные среды во время создания среды. Поэтому я не уверен, что я сделаю, чтобы исправить эту проблему.

+1

Простое редактирование ваш автоматическое масштабирование группы, связанные со средой и установить необходимое количество экземпляров в 0 (то же самое для Min). Подождите, пока ваш экземпляр не будет уничтожен. Когда среда Beanstalk не имеет экземпляра, обновите переменные среды.Дождитесь завершения обновления. Измените свою группу автоматического масштабирования. TADAAAAA, вы решили свою проблему :) – kiddouk

+2

У меня такая же проблема, как у Шеннона. @kiddouk ваше решение не работает для меня, EB жаловался, что значение должно быть> = 1. – syg

+1

@Shannon см. мое обходное решение ниже – syg

4

У меня такая же проблема, как у Шеннона. Мой обходной путь является

  • первых, развернуть образец Dockerfile, что гарантирует работу,
  • затем настроить все переменные окружения мое реальное приложение Docker будет нужно,
  • наконец перераспределить реальное приложение Докер.

Образец Dockerfile копии вставила из AWS documentation:

FROM ubuntu:12.04 

RUN apt-get update 
RUN apt-get install -y nginx zip curl 

RUN echo "daemon off;" >> /etc/nginx/nginx.conf 
RUN curl -o /usr/share/nginx/www/master.zip -L https://codeload.github.com/gabrielecirulli/2048/zip/master 
RUN cd /usr/share/nginx/www/ && unzip master.zip && mv 2048-master/* . && rm -rf 2048-master master.zip 

EXPOSE 80 

CMD ["/usr/sbin/nginx", "-c", "/etc/nginx/nginx.conf"] 
+0

Это самый чистый способ сделать, я думаю ... нет скриптов, просто немного взломать чтобы получить проект с земли и установить переменные env. +1 – bonez

+1

Разочарование AWS требует взлома, подобного этому, поскольку я предполагаю, что это распространенный сценарий. Вы должны иметь возможность устанавливать env vars при настройке среды в веб-интерфейсе. Благодарим за полезное решение. –

1

Вы можете предоставить свои переменные окружения в командной строке в ее создать и Е.Б. клон команды. Они устанавливаются до задачи создания или клонирования, поэтому среда будет придумана для них.

См. Справку eb cli. Например ...

$ eb create -h ... --envvars ENVVARS a comma-separated list of environment variables as key=value pairs ...

Смежные вопросы