成功构建 docker 后未找到 Yarn 命令

问题描述 投票:0回答:1

嗨,我正在使用

amazonlinux:2
作为我的 docker 映像,并且我正在尝试从
nodev14
安装
nvm
,我没有找到任何替代方法来执行我正在尝试安装
yarn
的操作。这是我的
Dockerfile

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

当我构建时,它构建成功,但是当我运行

docker run -it container /bin/bash
并运行
/bin/bash
后,它说找不到命令。 这是完整的日志

niteshrijal@Niteshs-MBP creepler % docker build -t node-14-tst .
[+] Building 50.9s (7/7) FINISHED                                                                           docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                        0.0s
 => => transferring dockerfile: 377B                                                                                        0.0s
 => [internal] load .dockerignore                                                                                           0.0s
 => => transferring context: 2B                                                                                             0.0s
 => [internal] load metadata for docker.io/library/amazonlinux:2                                                            2.5s
 => [auth] library/amazonlinux:pull token for registry-1.docker.io                                                          0.0s
 => CACHED [1/2] FROM docker.io/library/amazonlinux:2@sha256:7c24b50b9f0ad83b7219edb704962f361bcf3ec85fdfd302121159bf0d0a6  0.0s
 => [2/2] RUN yum update -y &&     yum install tar curl gzip -y &&     curl -o- https://raw.githubusercontent.com/nvm-sh/  47.5s
 => exporting to image                                                                                                      0.8s
 => => exporting layers                                                                                                     0.8s
 => => writing image sha256:bd8ae162aadb85eb1e08ac987f4cf136a7e604d7eac16231205d20ccab134e9a                                0.0s 
 => => naming to docker.io/library/node-14-tst                                                                              0.0s 

What's Next?
  View summary of image vulnerabilities and recommendations → docker scout quickview
niteshrijal@Niteshs-MBP creepler % docker run -it node-14-tst /bin/bash

bash-4.2# yarn
bash: yarn: command not found
node.js docker yarnpkg amazon-linux
1个回答
0
投票

您的 NVM 环境未激活。 当您安装 NVM 时,它会尝试将一些内容添加到正确的配置文件中的环境/路径中。如果它找不到合适的配置文件,它将无法执行此操作。它也无法知道您是否将通过 bash、sh、zsh 或其他 shell 连接到容器,因此它确实无法知道将变量添加到哪个文件。这就是为什么 NVM 自述文件指定它尝试将变量添加到正确的配置文件中。

尝试在容器的主目录中创建包含以下内容的 .bashrc 文件,如 NVM 自述文件中所述:

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

您可以通过在与 Dockerfile 相同的文件夹中创建 .bashrc 文件,然后复制它来完成此操作:

COPY .bashrc /root/.bashrc
© www.soinside.com 2019 - 2024. All rights reserved.