docker - 如何在 docker 容器中正确安装 npm 包
问题描述
我有一个默认的 CI 图像,假设它的名称是 ci:default,它可以并且必须由“-d”参数运行。我想在其中安装一些 npm 包,然后将新图像用作我自定义的 CI 图像。这是我尝试做的事情:
码头工人拉CI:默认
使用“docker run -it ci:default /bin/bash”命令运行并进入容器。
在那个容器中,使用“npm i -g XXX”来安装我需要的 npm 包,它就可以工作了。
使用“apt-get update”保存我对容器所做的更改。
退出容器,然后使用“docker commit”命令创建我的自定义镜像,我们将其命名为“ci:customized”。
到目前为止一切顺利,正如我所想。但是当我尝试使用“docker run -d ci:customized”运行新镜像时,它无法成功运行,而且我不知道我什么时候做错了,因为我是 docker 新手。
有人可以告诉我如何实现我的目标吗?
解决方案
我不知道您的确切问题是什么,因为您没有发布错误消息,但是有一种更好的方法可以使用 dockerfiles 使用您想要的包创建图像
创建一个名为Dockerfile
在其中你可以做类似的事情
FROM ci:default
RUN npm install
然后,您可以使用 docker build 将其构建到图像中。检查docker build的文档,但您应该只需要类似的东西docker build --tag ci:customized
这样做的好处是您现在有了一个记录如何设置图像的文本文件,因此当您以后需要修改它时,您不会忘记之前执行的步骤。
推荐阅读
- node.js - Nodejs密码重置我收到一个电子邮件并单击链接,但新密码没有改变。我只能用旧密码登录
- typescript - 在打字稿的自定义搜索栏组件中使用handleTextChange,谷歌自动完成
- r - 固定时间序列的 ARMA 模型预测,固定长度错误
- c# - C# 中定义的 Enumerable.Where 方法的参数在哪里?
- vue.js - 惯性 + vuejs 和 laravel 搜索框未捕获(承诺)TypeError
- c# - 使用 Http 请求 Rest API 失败,出现 401,但 Https 有效
- rust - Rust image::io::Reader: Permission Denied
- npm - 如何找到全局 npm 的 package.json?
- c# - 使用 WPF MediaElement 时如何确定是否安装了 Windows Media Player
- javascript - 将字符串分成一组对象