Dockerfile build /bin/sh -c 返回非零代码:1

Ser*_*ets 5 node.js nvm dockerfile

我的 dockerfile conf:

    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 Code Online (Sandbox Code Playgroud)

RUN [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"我得到错误的步骤中:

The command '/bin/sh -c [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"' returned a non-zero code: 1 
Run Code Online (Sandbox Code Playgroud)

大家知道我怎么解决吗?

Ser*_*ets 3

我解决了我的问题!感谢所有试图帮助我的人!在每个命令(RUN、CMD 等)之后,Docker 都会创建容器,保存对 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
Run Code Online (Sandbox Code Playgroud)