跳到主要内容

如何扩展代码块执行环境版本

由于 HAP 默认代码块执行环境使用的 Nodejs(10.18)、Python(3.6) 版本相对比较老,从 v5.1 开始,将支持扩展更多的执行环境版本。

可用镜像​

目前提供以下代码块执行环境镜像,完整镜像地址为 registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-command:<镜像标签>:

镜像标签Node.js 版本Python 版本
node1018-python36(默认)10.183.6
node2011-python31220.113.12
node24-python315243.15

考虑到兼容性问题,产品设计上支持多个版本切换使用。当然,如果不想使用老版本,也可以彻底切换到新版本。

依赖库扩展​

对于代码块依赖库扩展问题,依然参考 如何扩展代码块依赖库,根据所选镜像调整文档中的路径:

镜像标签Python 容器依赖库路径Node.js 容器依赖库路径
node1018-python36/usr/local/lib/python3.6/site-packages//usr/local/node-10.18.0/lib/node_modules/
node2011-python312/usr/local/lib/python3.12/site-packages//usr/local/node-20.11/lib/node_modules/
node24-python315/usr/local/lib/python3.15/site-packages//usr/local/node-24/lib/node_modules/

安装命令中的运行环境路径也需对应调整;不同版本的依赖库应使用独立的宿主机挂载目录。

执行环境配置​

node2011-python312 和 node24-python315 的配置方式相同,均支持以下两种模式:

  • 多版本共存模式:保留默认环境,按需添加其他版本,三个版本可同时使用。
  • 切换到新版本模式:替换 command 服务的镜像,统一使用所选版本。

多版本共存时,服务与扩展配置对应如下:

服务名镜像标签扩展配置索引nodeVersionpythonVersion
command(默认)node1018-python36无需配置——
commandv2node2011-python312[0]20.113.12
commandv3node24-python315[1]243.15

扩展配置中的服务地址使用 static://<服务名>:9098,索引不能重复。

以下以 node2011-python312 镜像为例。

  1. 下载镜像(离线包下载)

    docker pull registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-command:node2011-python312
  2. 修改配置文件,添加如下配置

    commandv2:
    image: registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-command:node2011-python312
  3. 创建代码块服务扩展配置文件,如:/data/mingdao/script/volume/workflow/application-www-ext.properties,文件内容如下:

    md.grpc.client.MDCommandService[0].address=static://commandv2:9098
    md.grpc.client.MDCommandService[0].nodeVersion=20.11
    md.grpc.client.MDCommandService[0].pythonVersion=3.12
  4. 挂载配置文件,在 app 服务的 volumes 中添加如下配置:

    volumes:
    - ./volume/workflow/application-www-ext.properties:/usr/local/MDPrivateDeployment/workflow/application-www-ext.properties
    - ./volume/workflow/application-www-ext.properties:/usr/local/MDPrivateDeployment/workflowconsumer/application-www-ext.properties
    - ./volume/workflow/application-www-ext.properties:/usr/local/MDPrivateDeployment/workflowintegration/application-www-ext.properties
    - ./volume/workflow/application-www-ext.properties:/usr/local/MDPrivateDeployment/workflowplugin/application-www-ext.properties
  5. 重启服务后,可在代码块中选择 Node.js 20.11、Python 3.12 执行环境,效果如下: