2015-05-23 6 views
0

Я пытаюсь понять, почему я не могу выполнить обновление версий Ubuntu на данном Эластичном Beanstalk example с Docker.Ошибка обновления версии Ubuntu с помощью Docker и ElasticBeanstalk

Это прекрасно работает:

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"] 

Это не:

FROM ubuntu:14.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"] 

Файл журнала дает оценку: "возвратила ненулевой код: 127" ошибка.

+0

Вы видели сообщение со ссылкой на устройство? Похоже, в этом контексте есть довольно некоторое обсуждение GitHub Docker об ошибке 127. – Armand

+0

Привет @Armand вы можете дать мне подсказку, где найти это? (новый для Docker ...) –

+1

Уверен: https://github.com/docker/docker/issues/5684#issuecomment-69052334 – Armand

ответ

3

Команда не удается, потому что нет /usr/share/nginx/www каталога в контейнере, но есть /usr/share/nginx/html

---> 1911c575617e 
Step 4 : RUN curl -o /usr/share/nginx/www/master.zip -L https://codeload.github.com/gabrielecirulli/2048/zip/master 
---> Running in d0ad1a5e7a3f 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
    0  0 0  0 0  0  0  0 --:--:-- --:--:-- --:--:--  0Warning: Failed to create the file /usr/share/nginx/www/master.zip: No such 
Warning: file or directory 
    0 324k 0 867 0  0 1969  0 0:02:48 --:--:-- 0:02:48 1965 
curl: (23) Failed writing body (0 != 867) 
INFO[0000] The command [/bin/sh -c curl -o /usr/share/nginx/www/master.zip -L https://codeload.github.com/gabrielecirulli/2048/zip/master] returned a non-zero code: 23 
$ docker run --rm -ti 1911c575617e 
[email protected]:/# ls -al /usr/share/nginx/www 
ls: cannot access /usr/share/nginx/www: No such file or directory 
[email protected]:/# ls -al /usr/share/nginx 
total 12 
drwxr-xr-x 3 root root 4096 May 23 11:04 . 
drwxr-xr-x 65 root root 4096 May 23 11:04 .. 
drwxr-xr-x 2 root root 4096 May 23 11:04 html 

Советы: Best practice является использовать ту же команду запуска для apt-get update && apt-get install. Также всегда старайтесь удалять временные файлы в той же команде запуска при их создании: каждая команда запуска создает дополнительное изображение, поэтому, если вы получаете файл в одной команде выполнения и удаляете в следующем, он будет помечен как удаленный, но он будет ненужное увеличение размера изображения. В большинстве моих изображений я использую команду одиночного запуска, которая для ubuntu/debian выглядит так:

RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections \ 
&& apt-get update -qq \ 
&& apt-get install -y -qq ... \ 
... 
&& apt-get clean \ 
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 
+0

Спасибо @ISanych, многому учусь :-) –

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