Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Docker ubuntu:16.04映像需要vpn证书才能正常工作,但node:14-alpine3.12不需要?_Node.js_Docker_Ubuntu_Dockerfile_Alpine - Fatal编程技术网

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

Node.js Docker ubuntu:16.04映像需要vpn证书才能正常工作,但node:14-alpine3.12不需要?,node.js,docker,ubuntu,dockerfile,alpine,Node.js,Docker,Ubuntu,Dockerfile,Alpine,出于某种原因,ubuntu:16.04 docker镜像会抱怨,在没有安装证书的情况下无法下载npm包或安装任何东西,当我切换到节点14 alpine 3.12时,它就不再是问题了 有人知道为什么会这样吗?这可能与ubuntu有着更严格的网络需求有关,因为它是一个更完整的套件,而alpine是超轻量的,直接连接到主机网络 我不知道如何解释这里发生了什么 其他信息: 老码头工人 FROM ubuntu:16.04 RUN apt-get update && apt-get ins

出于某种原因,ubuntu:16.04 docker镜像会抱怨,在没有安装证书的情况下无法下载npm包或安装任何东西,当我切换到节点14 alpine 3.12时,它就不再是问题了

有人知道为什么会这样吗?这可能与ubuntu有着更严格的网络需求有关,因为它是一个更完整的套件,而alpine是超轻量的,直接连接到主机网络

我不知道如何解释这里发生了什么

其他信息:

老码头工人

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"]
FROM node:14-alpine3.12

WORKDIR /app

RUN apk update && apk add python3 py-pip

RUN pip install awscli 

COPY . .

RUN npm ci
新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"]
FROM node:14-alpine3.12

WORKDIR /app

RUN apk update && apk add python3 py-pip

RUN pip install awscli 

COPY . .

RUN npm ci

看起来这是因为在旧版本中,我使用的是基本映像,而在第二版本中,您使用的是应用程序映像。为了安装节点并使其可用,您需要安装CA证书

因此,在旧版本中,将安装证书,以便您可以从nodesource.com获取节点 在新版本中,我使用了一个节点映像,因此在docker构建期间不需要安装节点


因此,由于安装不再在基础映像中进行,而不是由主机/本地计算机下载,因此它已经拥有证书。

alpine映像比ubuntu映像更新得多,这可能是alpine拥有与npm建立ssl/tls连接所需的所有证书的原因