首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Dockerfile重启终端并运行命令

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

Stack Overflow用户
提问于 2018-07-04 21:09:16
回答 4查看 3.9K关注 0票数 11

我有一个安装nvm的Dockerfile。安装之后,我需要使用nvm安装Node5.11。问题是,在安装nvm之后,需要关闭终端并再次运行,以便使nvm命令可用。

我的docker文件如下所示:

代码语言:javascript
复制
# 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

我得到的输出是:

代码语言:javascript
复制
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、关闭并启动终端之后,nvm命令变得可用。如何在dockerfile中完成此操作?提前谢谢。

EN

回答 4

Stack Overflow用户

发布于 2019-12-06 14:39:56

Has命令可以做到这一点。

PATH="$PATH"exec bash

因此,您可以在dockerfile中添加这些命令。

如果exec bash不是work.Try另一个。

这是我的工作!

票数 1
EN

Stack Overflow用户

发布于 2021-10-29 23:30:52

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

代码语言:javascript
复制
RUN bash -c "source ${HOME}/.bashrc" 
票数 0
EN

Stack Overflow用户

发布于 2021-10-30 00:09:08

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

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51174516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档