亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 工业技术

使用容器进行多阶段构建

当您完成交付时,系统很快就会变得非常大。这包括构建,通常是构建和测试环境。即使提取要发送的文件没有问题,但也很耗时。

容器提供了自动执行此操作的可能性。

在这里,您可以选择在一个文件中定义多个容器。使用 JavaScript 创建并使用 Node.js 构建的网站就是一个很好的例子。

示例:

Node.js:~ 400 MB – 600 MB
网络服务器 nginx:~ 20 MB
网站:~ 2 MB

整个系统作为一个容器导致总共超过 600 MB,尽管只需要 22 MB(网络服务器 + 网站)。此外,系统存在安全风险,因为存在软件,而生产操作不需要该软件。这里的解决方案是多阶段构建。

在多阶段构建中,在一个文件中定义了多个容器,然后只将必要的数据从一个容器传输到另一个容器。

多阶段 dockerfile 示例

为了继续使用 Node.js,这里有一个多阶段构建示例。第一个容器包含 Node.js 作为构建系统,在其中创建了网站。第二个容器包含 Web 服务器,它会在构建后从第一个容器中复制必要的数据。

## Base System Stage 1
## Use community Node.js container
FROM node:8.11.3 as buildsystem

## Add source from our Git project
COPY ./source /root/frontend

## Build frontend with Nodejs
WORKDIR /root/frontend/
RUN npm install \
&& npm run build

#####################################################################
#####################################################################

## Base System Stage 2
## Use community nginx container
FROM nginx:alpine 

## Copy build from stage 1
RUN mkdir -p /var/www/html/<MyApp>
COPY --from=buildsystem /root/frontend/dist/ /var/www/html/<MyApp>/

## Add default config for nginx
ADD default.conf /etc/nginx/conf.d/

## Publish Port
EXPOSE 80

## Start nginx
CMD ["nginx", "-g", "daemon off;"]

结果是一个只包含最必要的小容器。我们为 alpine 的 nginx 使用了一个非常小的 Linux 发行版。

另一个优点是您可以访问两个现成的社区容器,因此无需创建和维护它们。对于系统更新,只需定期更换社区容器。使用 GitLab(或其他工具)可以在管道中完美地自动化整个事情。


工业技术

  1. 明智地选择您的云服务以与商业领袖建立信任
  2. 带科学记数法的算术
  3. 与工业 4.0 解决方案架构师的问答
  4. 使用 Raspberry Pi、DHT11 传感器和 Thingspeak 构建您的第一个物联网。
  5. Microsoft 构建了最大的语言生成模型,具有 170 亿个参数
  6. 供应链公司如何利用 AI 制定路线图
  7. 智能采购平衡 AI 与 HI
  8. 集装箱起重机
  9. 与 CMMS 软件建立协作文化
  10. 在 x86 上为 arm 构建容器
  11. 使用容器进行多阶段构建
  12. 带有 docker 提示和最佳实践的 Node-Red