写点什么

MyEMS 开源能源管理系统核心代码解读 015

  • 2025-07-21
    黑龙江
  • 本文字数:1436 字

    阅读完需:约 5 分钟

MyEMS开源能源管理系统核心代码解读015

MyEMS 开源能源管理系统适用于建筑、工厂、商场、医院、园区的电、水、气等能源数据采集、分析、报表,还有光伏、储能、充电桩、微电网、设备控制、故障诊断、工单管理、人工智能优化等可选功能。资深专业团队开发维护,保障长期支持。用开源助力企业集团、产业园区、能源运营商低碳发展!

本期解读:

myems-web Dockerfile:myems/myems-web/Dockerfile

源代码链接:https://gitee.com/myems/myems/blob/master/myems-web/Dockerfile?sessionid=261001321


FROM node:latest as build-stageWORKDIR /optCOPY . .# use this for node v17.x.x or above, note that the default command maybe slow at sometimeRUN npm install --unsafe-perm=true --allow-root --legacy-peer-deps# use this if above command is slow or unavialiable# RUN npm install --unsafe-perm=true --allow-root --legacy-peer-deps --registry https://registry.npm.taobao.org# use this (without --legacy-peer-deps)  for node v16.x.x# RUN npm install --unsafe-perm=true --allow-rootRUN npm run build
FROM nginx:latest as production-stageRUN apt update && apt install -y nano telnet# remove the default configRUN rm /etc/nginx/conf.d/default.conf && rm /etc/nginx/nginx.conf# create new root folderRUN mkdir -p /var/www/myems-webCOPY nginx.conf /etc/nginx/COPY --from=build-stage /opt/build/ /var/www/myems-webEXPOSE 80CMD ["nginx", "-c", "/etc/nginx/nginx.conf", "-g", "daemon off;"]
复制代码

这个 Dockerfile 文件是用于构建一个基于 Node.js 和 Nginx 的 web 应用的 Docker 镜像。它使用了多阶段构建(multi-stage build)来优化最终镜像的大小和结构。

概要

  1. 构建阶段:使用 Node.js 环境来构建前端应用。

  2. 生产阶段:使用 Nginx 作为静态文件服务器来部署构建好的前端应用。

详细解析

  1. FROM node:latest as build-stage这行代码指定了构建阶段的基础镜像为最新版本的 Node.js。

  2. WORKDIR /opt设置工作目录为/opt

  3. COPY . .将当前目录下的所有文件复制到工作目录中。

  4. RUN npm install --unsafe-perm=true --allow-root --legacy-peer-deps运行 npm 安装依赖。这个命令适用于 Node.js v17.x.x 或更高版本。--unsafe-perm=true--allow-root参数用于解决权限问题,--legacy-peer-deps用于处理依赖关系。

  5. RUN npm run build执行构建脚本,通常是编译、打包前端资源。

  6. FROM nginx:latest as production-stage开始生产阶段的构建,使用最新版本的 Nginx 作为基础镜像。

  7. RUN apt update && apt install -y nano telnet更新软件包列表并安装 nano 和 telnet 工具。

  8. RUN rm /etc/nginx/conf.d/default.conf && rm /etc/nginx/nginx.conf删除 Nginx 的默认配置文件。

  9. RUN mkdir -p /var/www/myems-web创建新的根目录用于存放前端应用。

  10. COPY nginx.conf /etc/nginx/将自定义的 Nginx 配置文件复制到 Nginx 的配置目录。

  11. COPY --from=build-stage /opt/build/ /var/www/myems-web从构建阶段复制构建好的前端应用到 Nginx 的根目录。

  12. EXPOSE 80 - 暴露 80 端口,Nginx 默认监听此端口。

  13. CMD ["nginx", "-c", "/etc/nginx/nginx.conf", "-g", "daemon off;"]设置容器启动时执行的命令,这里启动 Nginx 服务器。

补充说明

  • 这个 Dockerfile 使用了多阶段构建,可以减少最终镜像的大小,因为它只包含了运行应用所必需的文件。

  • 在构建阶段,使用了 Node.js 环境来处理前端资源的构建。

  • 在生产阶段,使用了 Nginx 作为静态文件服务器,更适合在生产环境中提供服务。

用户头像

还未添加个人签名 2020-11-09 加入

还未添加个人简介

评论

发布
暂无评论
MyEMS开源能源管理系统核心代码解读015_开源_开源能源管理系统_InfoQ写作社区