获取错误 /bin/sh: 1: 源: 未找到

Mus*_*que 6 ubuntu node.js nvm docker dockerfile

我正在尝试构建 docker 并安装 nvm

一些代码行

RUN curl   https://raw.githubusercontent.com/creationix/nvm/v0.25.0/install.sh | bash
    RUN source ~/.profile
Run Code Online (Sandbox Code Playgroud)

curl 运行成功,但在运行源代码时,出现以下错误

/bin/sh: 1: source: not found
The command '/bin/sh -c source ~/.profile' returned a non-zero code: 127
Run Code Online (Sandbox Code Playgroud)

Tua*_*uan 5

来自Docker 文档

\n\n
\n

可以使用 SHELL\n 命令更改 shell 形式的默认 shell。

\n\n

在 shell 形式中,您可以使用 \\(反斜杠)将单个 RUN\n 指令继续到下一行。例如,考虑以下两行:\n RUN /bin/bash -c \'source $HOME/.bashrc ;\\ echo $HOME\' 它们\n 一起相当于这一行: RUN /bin/bash - c \'源\n $HOME/.bashrc ; 回显$HOME\'

\n\n

注意:要使用除 \xe2\x80\x98/bin/sh\xe2\x80\x99 之外的其他 shell,请使用 exec\n 形式传递所需的 shell。例如,RUN ["/bin/bash",\n "-c", "echo hello"]

\n
\n\n

你可以尝试:

\n\n
RUN curl   https://raw.githubusercontent.com/creationix/nvm/v0.25.0/install.sh | bash\n# RUN source ~/.profile\nRUN ["/bin/bash", "-c", "source ~/.profile"]\n
Run Code Online (Sandbox Code Playgroud)\n

  • 我在这里遇到同样的问题。 (2认同)

Mus*_*que 2

我解决了这个答案

而不是安装 nvm"source ~/.profile"

我把它改成

RUN curl   https://raw.githubusercontent.com/creationix/nvm/v0.25.0/install.sh | bash

ENV NVM_DIR=/root/.nvm
ENV NODE_VERSION=4.5.0
RUN . $HOME/.nvm/nvm.sh && nvm install $NODE_VERSION && nvm alias default $NODE_VERSION && nvm use default
Run Code Online (Sandbox Code Playgroud)