到目前为止我有这个:
FROM --platform=linux/amd64 amd64/ubuntu:noble
ENV TERM linux
ENV DEBIAN_FRONTEND noninteractive
SHELL [ "/bin/bash", "-c" ]
ENV SHELL /bin/bash
RUN apt update -y -q
RUN apt upgrade -y -q
RUN apt install -y -q build-essential
RUN apt-get -y install curl
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
RUN source ~/.bashrc
RUN nvm install 20.10
RUN node -v
遵循这些指南:
我的第一个问题是:
> [ 8/10] RUN source ~/.bashrc:
0.090 /bin/sh: 1: source: not found
------
Dockerfile:12
--------------------
10 | RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
11 | RUN exec bash
12 | >>> RUN source ~/.bashrc
13 | RUN nvm install 20.10
14 | RUN node -v
也就是说,
source: not found
。所以事实证明 dash
是我猜的 ubuntu shell,所以最后一个链接建议将 shell 更改为 bash
,就像我在第一个代码片段中所做的那样。
我遇到的下一个错误是:
0.126 /bin/bash: line 1: nvm: command not found
------
Dockerfile:17
--------------------
15 | RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
16 | RUN source ~/.bashrc
17 | >>> RUN nvm install 20.10
18 | RUN node -v
19 |
--------------------
ERROR: failed to solve: process "/bin/bash -c nvm install 20.10" did not complete successfully: exit code: 127
我如何构建它才能识别最新 ubuntu 上的 nvm 命令?
附注我不想安装节点映像,我想要一个基本的 ubuntu 映像,以遵循 compiler-explorer 项目 的路线。我正在尝试安装数十个软件,而节点只是其中之一。我正在安装 rust、clang、python 和许多其他东西,并且必须将图像基于语言并不是我想要的。
他们有一个 nvm 故障排除 nvm not found 指南,但到目前为止它还没有解决我的具体问题。
运行这个来构建,这就是它失败的地方:
docker build --platform linux/amd64 --progress=plain . -t test-ubuntu
但是,我刚刚尝试过这个:
docker run --platform linux/amd64 --name test-ubuntu -d -i -t test-ubuntu
docker exec -it test-ubuntu bash
$ nvm
并且它可以识别 nvm 命令!
那么为什么构建无法识别它?
我不确定您在发布问题之前是否搜索过社区,但这里有一些答案