node.js - Docker ubuntu :16. 04 镜像需要 vpn 证书才能正常工作,但 Node :14-alpine3. 12 不需要?

标签 node.js docker ubuntu dockerfile alpine

出于某种原因,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"]
新的 Dockerfile
FROM 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/

相关文章:

python - Crontab 作业没有启动...想法?

linux - Node 检查器不在 linux 服务器上工作

javascript - 与 gmail 和 node.js 的 POP3 对话

docker - 容器内的 Terraform 删除文件

macos - 无法连接到 Neo

python - 如何使用 Python 从结果文件中获取设备的特定详细信息

mysql - 无法让passportjs使用express和mysql验证本地策略

node.js - Express 中间件 jsonwebtoken 身份验证

docker - 我应该如何使用主机而不是服务名称连接到容器?

asp.net - 如何将简单的 Dotnet 应用程序发布到 Ubuntu?