繁体   English   中英

使用 Dockerfile 重新启动终端并运行命令

[英]Restart terminal & run command using Dockerfile

我有一个用于安装 nvm 的 Dockerfile。 安装后,我需要使用 nvm 安装节点 5.11。 问题是,安装 nvm 后,终端需要关闭并再次运行,以便 nvm 命令可用。

我的 docker 文件如下所示:

# Installing Node
RUN Y | curl https://raw.githubusercontent.com/creationix/nvm/v0.30.2/install.sh | bash
# RUN bash --login
RUN exec bash
RUN nvm install 5.11.0

# Installing Project dependencies
RUN npm install yarn -g
RUN npm install -g webpack@1.13.2

我得到的输出是:

Step 5/9 : RUN exec bash
 ---> Using cache
 ---> cfcdc4c98714
Step 6/9 : RUN nvm install 5.11.0
 ---> Running in 1874de4a7715
/bin/sh: 1: nvm: not found
The command '/bin/sh -c nvm install 5.11.0' returned a non-zero code: 127

在真正的 linux 中运行https://raw.githubusercontent.com/creationix/nvm/v0.30.2/install.sh | bash https://raw.githubusercontent.com/creationix/nvm/v0.30.2/install.sh | bash关闭并启动终端后, nvm 命令可用。 我如何在 dockerfile 中做到这一点? 提前致谢。

有命令可以做到这一点。
PATH="$PATH"exec bash
因此,您可以在 dockerfile 中添加这些命令。
如果exec bash不起作用。尝试另一个。
这对我有用!

您可以使用以下命令在 Dockerfile 中重新启动终端:

RUN bash -c "source ${HOME}/.bashrc" 

每个新的RUN命令都会在 docker 镜像中创建一个新层,因此您可以将其视为每个“RUN”产生的新终端。

似乎是什么问题:以这种方式运行命令时:通过 bash curl https://raw.githubusercontent.com/creationix/nvm/v0.30.2/install.sh | bash管道它 curl https://raw.githubusercontent.com/creationix/nvm/v0.30.2/install.sh | bash如果出现故障,它不会抛出任何错误。

几周前有类似的问题。 您的基础映像是否具有所有依赖项? 根据基础镜像,在从 github 运行脚本之前添加一个RUN任务,它将下载curl wget ca-certyficates 您可以查找其他人如何在他们的图像上安装 nvm: https : //github.com/mikeyfarrow/docker-nvm/blob/master/Dockerfile

您应该使用已安装正确版本的 node.js 的预构建节点映像

当您已经拥有 Docker 镜像作为与可能安装在主机上的其他软件的隔离层时,您不需要像 nvm(rvm、virtualenv 等)这样的工具; 您永远不会在单个映像中安装多个版本的语言运行时,而您可能需要在桌面或开发人员系统上安装。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM