2016-10-30 5 views
2

моего dockerfile конф:Dockerfile построить/бен/ш -с возвратил ненулевой код: 1

FROM ubuntu:16.04 
    MAINTAINER S.K. 
    RUN apt-get update 
    RUN apt-get install curl -y 
    RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash 
    RUN export NVM_DIR="$HOME/.nvm" 
    RUN [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" 
    RUN nvm install node 
    RUN nvm use 6.9.1 
    RUN npm i express -g 
    RUN npm i nunjucks -g 
    RUN npm i nodemon -g 
    RUN mkdir -p PROJECT 
    VOLUME /PROJECT/ 
    EXPOSE 1520 

На этапе RUN [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" Im получить сообщение об ошибке:

The command '/bin/sh -c [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"' returned a non-zero code: 1 

Все знают, как я могу это исправить?

+0

Что 'RUN [-s«$ NVM_DIR/nvm.sh "] &&. «$ NVM_DIR/nvm.sh» 'делает? почему он повторяется? А что такое '-s'? – Rao

+0

Чтобы отладить его, попробуйте добавить 'set -x; 'к началу этой строки. Он должен распечатать более подробную информацию о том, что он делает. Сообщения об ошибках одна из вещей потерпела неудачу. – dnephin

ответ

1

Я решил свою проблему! Спасибо всем, кто пытался мне помочь! После каждой команды (RUN, CMD и др.) Docker создает контейнер, сохраняет изменения на изображении докеров и удаляет контейнер перед следующей командой. Docker также сжимает каталоги и файлы каждой итерации каждой команды. Вы должны знать, что, прежде чем делать что-либо, если вы не хотите, чтобы получить исключение или ошибку ..

Это работает код:

FROM ubuntu:16.04 
MAINTAINER S.K. 
RUN apt-get update 
RUN apt-get install curl -y 
RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash \ 
&& export NVM_DIR="$HOME/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" \ 
&& nvm install 6.9.1 \ 
&& npm i express -g \ 
&& npm i nunjucks -g \ 
&& npm i nodemon -g \ 
&& npm i gulp -g \ 
RUN mkdir -p ./PROJECT 
EXPOSE 1520