问题描述
在使用 Redhat 的 ubi8/nodejs-14-minimal 基础镜像时遇到了一个奇怪的问题。在构建过程中出现错误信息 “/bin/sh: yarn not found”。
用户已经在 Dockerfile 中使用 “Run npm install yarn –global” 命令安装了 yarn。但是在使用更精简的基础镜像,比如 ubi-minimal,却没有出现这个问题。用户在添加了 nodejs 14 模块之后,通过 “npm install yarn –global” 命令可以正常运行。
用户想知道是否有人在使用这些 Redhat 的 ubi 镜像时遇到类似的问题,是否有解决方法。
解决方案
以下解决方案提供了两种可能的方法来解决这个问题。请注意根据具体情况选择适合的方法。
方案1:检查环境变量和路径设置
有时候问题可能出现在环境变量和路径设置上。请按照以下步骤检查和调整设置:
1. 在 Dockerfile 中,确保使用 “npm install yarn –global” 安装 yarn。
2. 确保 Dockerfile 中的其他命令没有覆盖或修改 PATH 环境变量。
3. 确保你在容器内运行的任何脚本或命令不会更改 PATH 环境变量。
4. 确保在构建镜像时没有使用自定义的 ENTRYPOINT 或 CMD 来更改默认的执行命令,可能会影响环境变量的设置。
如果问题仍然存在,尝试以下方案。
方案2:尝试使用绝对路径或指定环境变量
有时候在某些基础镜像中,可能需要使用绝对路径来指定可执行文件的位置,或者需要显式地指定环境变量。你可以尝试以下步骤:
1. 使用绝对路径来调用 yarn。在你的脚本或命令中,使用绝对路径来执行 yarn 命令。例如,使用 “/usr/local/bin/yarn”。
2. 显式地设置 PATH 环境变量。在 Dockerfile 中,使用 “ENV PATH=$PATH:/usr/local/bin” 来确保路径包含了 yarn 的可执行文件所在的目录。
请注意,以上解决方案可能需要根据具体情况进行调整,并在执行任何更改之前做好备份。
总结
在使用 Redhat 的 ubi 镜像时遇到 “/bin/sh: yarn not found” 错误,可能是由于环境变量或路径设置的问题。你可以检查 Dockerfile 中的命令、路径设置以及环境变量,并尝试使用绝对路径或指定环境变量的方式来调用 yarn 命令。根据具体情况选择合适的解决方案,并在执行任何更改之前做好备份。