在docker容器中安装NodeJS时的问题



我们已经创建了一个新的ASP。Net core + Angular应用。我们正在通过Azure CI/CD进程在AKS容器中部署应用程序。我们在docker文件(容器)中添加了以下命令,以便在运行时将Node安装到容器中。

RUN apt-get update && 
apt-get install -y wget && 
apt-get install -y gnupg2 && 
wget -qO- https://deb.nodesource.com/setup_18.x | bash - && 
apt-get install -y build-essential nodejs

在容器构建过程中,我们使用URL - https://deb.nodesource.com/setup_18.x在docker容器中安装nodeJs。在Devops服务器上,这个脚本在内部执行。试图连接到http://deb.debian.org/站点。

在我的组织中,防火墙限制是为了防止Devops服务器的任何http调用。这将阻止脚本执行。

下面是DevOps 的日志
apt-get update Err:1 http://deb.debian.org/debian bullseye InRelease Could not connect to deb.debian.org:80 (199.232.106.132), connection timed out Err:2 http://deb.debian.org/debian-security bullseye-security InRelease Unable to connect to deb.debian.org:80: 

我们的安全团队不允许打开80端口访问http url,因为这会导致安全风险。

我们需要在docker文件或任何设置中做任何更改吗?我们想知道我们是否遵循正确的步骤,以及是否有任何解决方法来克服这个http调用。

提前感谢!!

使用通用的基础图像也有一些开销。就像在dockerfile中运行每个命令会创建一个额外的层,最终的图像大小将是巨大的。你可以在这里阅读更多关于编写dockerfile的最佳实践。就像评论中提到的Flo一样,最可行的解决方案是使用节点:x.x。已经安装了所有所需软件包的X基本映像。以下是您可以使用的示例dockerfile:

FROM node:16
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
RUN npm install
# If you are building your code for production
# RUN npm ci --only=production
# Bundle app source
COPY . .
EXPOSE 8080
CMD [ "node", "server.js" ]

参考:https://nodejs.org/en/docs/guides/nodejs-docker-webapp/https://www.digitalocean.com/community/tutorials/how-to-build-a-node-js-application-with-docker

最新更新