docker - Docker - 如何运行在构建过程中安装的包?
问题描述
我正在尝试在 docker 映像中复制我从 CLI 执行的操作。我在全球范围内安装了一个 npm 包,然后尝试运行它。
npm
已成功安装,但 CMD 失败mup: command not found
FROM ubuntu:latest
#...
# Install mup
RUN npm install mup -g
CMD ["/bin/bash", "-c", "mup ${*}"]
解决方案
您没有在 Docker 容器中指定用户,因此容器内的命令以 root 用户身份运行。
的默认全局安装位置mup
是/usr/local/bin/mup
. Ubuntu 18.04 中 root 用户的默认PATH
环境变量不包含/usr/local/bin
:
root@localhost:/# whoami
root
root@localhost:/# echo $PATH
/bin:/sbin:/usr/bin:/usr/sbin:
您可以在 Dockerfile 中创建一个用户/usr/local/bin
,或PATH
调整 root 用户PATH
以包含/usr/local/bin
,或使用绝对路径。/usr/local/bin/mup
推荐阅读
- c# - 如何在 PC 的默认文本编辑软件(不是默认关联的应用程序)中打开文件?
- python - 我的线性回归模型不适合需要二维数组
- angular - 如何从Angular规范触发输入onchange
- java - 在 Spring Boot 中的 mockito 测试中的 if...else 语句问题
- c# - 带有格式数组的 DateTime.TryParseExact() 始终返回 false
- sql - 选择替换然后加入
- java - 如何使用 Mongo 存储库两次查询同一字段?
- c# - 用于验证多个值的 EF 数据注释
- java - 改造转换问题 - 如何为具体 JSON 正确创建 POJO 类:
- mysql - 在 save() 方法中从另一个模型动态创建模型