You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Docker构建成功后yarn命令提示未找到的问题求助

Docker构建成功后yarn命令提示未找到的问题求助

嗨,我来帮你分析下这个问题~

你遇到的核心问题是:nvm的环境变量只在构建镜像时的那个RUN shell会话里生效,当你启动容器进入新的bash时,系统并不会自动加载~/.nvm/nvm.sh脚本,导致node和yarn的路径没被加入到系统的PATH环境变量中,所以才会提示“command not found”。

给你几个可行的解决方案,你可以根据需求选:

方案一:让容器启动的bash自动加载nvm环境

直接修改你的Dockerfile,在RUN命令的末尾添加一行,把nvm的加载命令写入bash的配置文件,这样每次启动bash都会自动加载环境变量:

FROM amazonlinux:2

RUN yum update -y && \
yum install tar curl gzip -y && \
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash && \
. ~/.nvm/nvm.sh && \
nvm install 14 -y &&  \
npm install yarn -g && \
yum install aws-cli -y && \
echo "source ~/.nvm/nvm.sh" >> ~/.bashrc && \  # 新增这一行,让bash启动时加载nvm
yum clean all

方案二:直接把node路径加入全局环境变量

如果你不想依赖nvm的shell脚本,也可以把node14的二进制路径直接加到系统全局PATH里,用ENV指令持久化:

FROM amazonlinux:2

RUN yum update -y && \
yum install tar curl gzip -y && \
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash && \
. ~/.nvm/nvm.sh && \
nvm install 14 -y &&  \
npm install yarn -g && \
yum install aws-cli -y && \
yum clean all

# 把node14的二进制路径加入全局PATH,替换成你实际安装的node版本号
ENV PATH="/root/.nvm/versions/node/v14.21.3/bin:$PATH"

要是怕版本号写错,也可以在RUN里动态获取路径并写入bash配置:

echo "export PATH=$(nvm which 14)/bin:$PATH" >> ~/.bashrc

方案三:跳过nvm,直接安装node14的rpm包

如果你的场景不需要切换node版本,其实可以不用nvm,直接从官方源安装node14,这样环境变量会自动配置好,更简洁:

FROM amazonlinux:2

RUN yum update -y && \
yum install tar curl gzip aws-cli -y && \
curl -sL https://rpm.nodesource.com/setup_14.x | bash - && \
yum install -y nodejs && \
npm install yarn -g && \
yum clean all

选其中一个方案修改Dockerfile重新构建,应该就能解决yarn找不到的问题啦~

备注:内容来源于stack exchange,提问作者Neetesshhr

火山引擎 最新活动