嗨,我正在使用
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
您的 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