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

利用多阶段容器构建精简部署流程

当完整交付系统时,系统体积往往会变得非常庞大,这不仅包含构建过程,还包括构建和测试环境。即使提取待交付文件不是问题,但这一过程耗时较长。

容器技术提供了自动化解决这一问题的可能性。

您可以在一个文件中定义多个容器。例如,使用 Node.js 构建的 JavaScript 网站就是一个典型场景。

以此为例:

若将整个系统打包为单一容器,总大小将超过 600 MB,但实际上生产运行仅需 22 MB(Web 服务器 + 网站)。此外,容器中包含生产环境不需要的软件,存在安全风险。解决方案是采用多阶段构建。

在多阶段构建中,可在一个文件中定义多个容器,并仅在容器间传输必要的数据。

多阶段 Dockerfile 示例

以 Node.js 为例,第一个容器包含作为构建系统的 Node.js,用于构建网站;第二个容器包含 Web 服务器,在构建完成后从第一个容器复制所需数据。

## 基础系统 阶段 1
## 使用社区 Node.js 容器
FROM node:8.11.3 as buildsystem

## 从 Git 项目添加源代码
COPY ./source /root/frontend

## 使用 Node.js 构建前端
WORKDIR /root/frontend/
RUN npm install \
&& npm run build

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

## 基础系统 阶段 2
## 使用社区 Nginx 容器
FROM nginx:alpine

## 从阶段 1 复制构建产物
RUN mkdir -p /var/www/html/<MyApp>
COPY --from=buildsystem /root/frontend/dist/ /var/www/html/<MyApp>/

## 添加 Nginx 默认配置
ADD default.conf /etc/nginx/conf.d/

## 暴露端口
EXPOSE 80

## 启动 Nginx
CMD ["nginx", "-g", "daemon off;"]

最终生成的容器极小,仅包含最必要的组件。我们为 Nginx 使用了基于 Alpine Linux 的精简发行版。

另一优势是可直接使用两个现成的社区容器,无需自行创建和维护。系统更新时,只需定期替换社区容器即可。整个流程可在 GitLab 等工具的流水线中完美自动化。

工业技术

  1. 树莓派 + DHT11 + ThingSpeak:打造你的第一个物联网项目
  2. 科学计数法乘除法精通:简化极值运算
  3. 工业4.0洞察:Bosch.IO高级解决方案架构师Verena Majuntke谈物联网、自动化与未来工厂
  4. 微软发布170亿参数T-NLG:全球最大语言模型重塑NLP应用
  5. AI驱动供应链战略路线图:从推式向推拉结合转型的指南
  6. 智慧采购:AI与人类洞察的融合
  7. CMMS 重塑协作文化:打破壁垒,实现跨部门与供应链的实时联动
  8. 在 x86 系统上高效构建 ARM 容器
  9. 利用多阶段容器构建精简部署流程
  10. Docker 中运行 Node-RED 专家技巧与最佳实践
  11. 高效集装箱起重机:港口与铁路场站的精准装卸利器
  12. 赢得业务领导者信任:选择正确的云服务