出于某种原因,ubuntu:16.04 docker 镜像会提示并且无法下载 npm 包或在没有安装证书的情况下安装任何东西,当我切换到 Node 14 alpine 3.12 时,它不再是一个问题。
有谁知道为什么会这样?是否与 ubuntu 具有更严格的网络需求有关,因为它是一个更完整的套件,而 alpine 是超轻量级并直接连接到主机网络?
我不知道如何解释这里发生的事情。
附加信息:
旧的 Dockerfile
FROM ubuntu:16.04
RUN apt-get update && apt-get install -y curl ca-certificates
ADD vpn_root.crt /usr/local/share/ca-certificates/vpn_root.crt
RUN chmod 644 /usr/local/share/ca-certificates/vpn_root.crt && update-ca-certificates
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash
RUN apt-get install -y nodejs
WORKDIR /app
ADD . /app
EXPOSE 4000
CMD ["npm run start"]
新的 DockerfileFROM node:14-alpine3.12
WORKDIR /app
RUN apk update && apk add python3 py-pip
RUN pip install awscli
COPY . .
RUN npm ci
最佳答案
看起来这是因为在旧版本中我使用的是基础镜像,而在第二个版本中您使用的是应用程序镜像。为了安装 Node 并使其可用,您需要安装 CA 证书。
因此,在旧版本中,正在安装证书,因此您可以从 nodesource.com 获取 Node
在新版本中,我使用的是 Node 镜像,因此在 docker build 期间不需要安装 Node 。
因此,由于安装不再发生在基础镜像中,而不是由主机/本地计算机下载,它已经拥有证书。
关于node.js - Docker ubuntu :16. 04 镜像需要 vpn 证书才能正常工作,但 Node :14-alpine3. 12 不需要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67612335/