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

简介: 这段Dockerfile用于构建一个基于Python的API应用容器,依托`python:slim`镜像实现轻量化部署。它安装了必要工具(如nano、telnet),创建文件上传目录,复制应用代码并安装依赖(支持阿里云PyPI镜像加速)。通过暴露8000端口和Gunicorn服务器配置(4个工作进程、600秒超时),确保API服务高效稳定运行。此配置适用于Python API应用的容器化部署,提升跨环境一致性与可移植性。

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

官网 :https://myems.io

MyEMS开源社区版下载:https://gitee.com/myems/myems

本期解读:
myems-web Dockerfile:myems/myems-web/Dockerfile

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

FROM node:latest as build-stage
WORKDIR /opt
COPY . .

# use this for node v17.x.x or above, note that the default command maybe slow at sometime
RUN 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-root

RUN npm run build


FROM nginx:latest as production-stage

RUN apt update && apt install -y nano telnet

# remove the default config
RUN rm /etc/nginx/conf.d/default.conf && rm /etc/nginx/nginx.conf

# create new root folder
RUN mkdir -p /var/www/myems-web

COPY nginx.conf /etc/nginx/
COPY --from=build-stage /opt/build/ /var/www/myems-web
EXPOSE 80
CMD ["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作为静态文件服务器,更适合在生产环境中提供服务。
相关文章
|
机器学习/深度学习 算法 数据挖掘
统计学与Python:实现描述性统计和推断性统计分析
【4月更文挑战第12天】本文介绍了Python在统计学中的应用,重点讲解了如何使用Python进行描述性与推断性统计分析。Pandas和NumPy库用于描述性统计,提供数据概括和总结功能;Scipy和Statsmodels库支持推断性统计,包括假设检验和模型建立。通过数据导入、描述性统计量计算、图表绘制以及假设检验和回归分析等步骤,展示了Python实现统计分析的基本流程。持续学习和实践将有助于提升Python统计分析能力。
892 0
|
存储 Cloud Native Ubuntu
音视频 ffmpeg命令直播拉流推流
音视频 ffmpeg命令直播拉流推流
|
5月前
|
数据采集 存储 算法
MyEMS 开源能源管理系统:基于 4G 无线传感网络的能源数据闭环管理方案
MyEMS 是开源能源管理领域的标杆解决方案,采用 Python、Django 与 React 技术栈,具备模块化架构与跨平台兼容性。系统涵盖能源数据治理、设备管理、工单流转与智能控制四大核心功能,结合高精度 4G 无线计量仪表,实现高效数据采集与边缘计算。方案部署灵活、安全性高,助力企业实现能源数字化与碳减排目标。
147 0
|
19天前
|
数据采集 人工智能 自然语言处理
爬虫是怎么工作的?从原理到用途
爬虫是自动采集网页数据的程序,像“探险家”遍历链接抓取信息,广泛用于搜索引擎、数据分析和网站迁移。但需遵守robots协议,尊重隐私与版权,规避法律风险。技术有边界,使用需合规,做有道德的“网页探险者”。
462 1
|
19天前
|
人工智能 JSON 测试技术
告别重复“点点点”!基于Dify工作流,打造能思考、会决策的自主测试智能体
在敏捷与DevOps时代,传统测试难以跟上节奏。本文基于Dify.ai工作流,构建具备感知、决策与执行能力的自主测试智能体,突破脚本脆弱、路径僵化等瓶颈,实现AI驱动的智能化测试闭环,让测试从重复劳动升级为持续守护质量的智能探索。
|
7月前
|
数据采集 人工智能 Ubuntu
MyEMS开源能源管理系统开发工具
MyEMS 是一款基于 ISO 50001 标准的开源能源管理系统,支持建筑、工厂等场景的电、水、气等能源数据采集与分析,提供光伏、储能、微电网、AI 优化等功能。系统采用开源工具开发,包括 PyCharm、VS Code、Docker、Ubuntu 等,并搭配 MySQL 数据库及 DBeaver 客户端,助力企业实现低碳发展。社区版完全免费,适合开发者学习和部署。下载地址:[https://gitee.com/myems/myems](./https://gitee.com/myems/myems)。
343 32
安装JDK18没有JRE环境的解决办法
安装JDK18没有JRE环境的解决办法
1292 141
|
Linux Nacos 数据库
【微服务】生产部署nacos集群(三个节点)
【微服务】生产部署nacos集群(三个节点)
433 1
|
Kubernetes 关系型数据库 MySQL
k8s部署nacos集群
k8s部署nacos集群
1376 1
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
351 9