本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
Dart Serverless Runtime 是一个基于Docker的轻量级运行环境镜像,专为执行Dart编写的无服务器(Serverless)函数设计。该镜像提供了完整的Dart运行时环境,支持Dart生态系统工具(如pub包管理),并针对无服务器场景优化了启动速度和资源占用,可无缝集成到各类Serverless平台(如AWS Lambda、Google Cloud Functions、Azure Functions或自建Kubernetes环境)。
从Docker Hub拉取最新版本:
docker pull dartserverless/runtime:latest
指定Dart版本(如3.1.0):
docker pull dartserverless/runtime:3.1.0
假设本地Dart函数代码位于./my-function目录,执行以下命令启动容器:
docker run -d \ -p 8080:8080 \ -v $(pwd)/my-function:/app/function \ -e FUNCTION_PATH=/app/function \ -e DART_VERSION=3.1.0 \ -e PORT=8080 \ --name dart-serverless-instance \ dartserverless/runtime:latest
创建docker-compose.yml:
version: '3.8' services: dart-serverless: image: dartserverless/runtime:3.1.0 ports: - "8080:8080" volumes: - ./my-function:/app/function # 挂载本地函数代码目录 environment: - FUNCTION_PATH=/app/function # 函数代码存放路径(必填) - DART_VERSION=3.1.0 # Dart运行时版本 - PORT=8080 # 服务监听端口 - LOG_LEVEL=info # 日志级别 - PUB_MIRROR=[***] # 国内pub镜像源(可选) restart: unless-stopped
启动服务:
docker-compose up -d
| 环境变量名 | 描述 | 默认值 | 是否必填 |
|---|---|---|---|
| FUNCTION_PATH | Dart函数代码存放路径 | 无 | 是 |
| DART_VERSION | 指定Dart运行时版本 | latest | 否 |
| PORT | 服务监听端口 | 8080 | 否 |
| LOG_LEVEL | 日志级别(debug/info/warn/error) | info | 否 |
| PUB_MIRROR | pub镜像源(加速依赖下载) | [***] | 否 |
| FUNCTION_ENTRY | 函数入口文件路径 | ${FUNCTION_PATH}/main.dart | 否 |
Dart函数需包含入口文件(默认main.dart),并定义标准handler函数,格式如下:
dynamic handler(dynamic event, dynamic context) { // 函数逻辑代码 return response; // 返回响应结果(通常为Map类型) }
event:触发器事件数据(如HTTP请求参数、事件详情等)context:运行时上下文(如请求ID、超时时间、环境信息等)./my-function/main.dart:
import 'dart:convert'; import 'dart:io'; dynamic handler(dynamic event, dynamic context) { // 解析HTTP事件(假设event为标准HTTP请求对象) final path = event['path'] ?? '/'; final method = event['httpMethod'] ?? 'GET'; final query = event['queryStringParameters'] ?? {}; // 构造响应 return { 'statusCode': 200, 'headers': {'Content-Type': 'application/json'}, 'body': json.encode({ 'message': 'Hello from Dart Serverless Runtime', 'timestamp': DateTime.now().toIso8601String(), 'requestInfo': { 'path': path, 'method': method, 'query': query, 'dartVersion': Platform.version.split(' ').first } }) }; }
在函数目录下创建pubspec.yaml声明依赖:
name: my_serverless_function version: 1.0.0 environment: sdk: '>=3.0.0 <4.0.0' dependencies: json_annotation: ^4.8.1 # JSON序列化依赖 http: ^0.13.5 # HTTP客户端依赖 dev_dependencies: build_runner: ^2.4.4 json_serializable: ^6.7.0
容器启动时会自动执行pub get安装依赖。
A: 通过DART_VERSION环境变量指定,例如-e DART_VERSION=3.0.5。支持的版本可通过Docker Hub镜像标签查询([***]
A: 1. 设置LOG_LEVEL=debug获取详细日志;2. 检查函数代码是否符合规范;3. 确认pubspec.yaml依赖配置正确;4. 验证函数目录挂载路径是否正确。
A: 支持。可通过修改运行时配置文件(/app/runtime/config.yaml)定义自定义触发器的事件解析逻辑,或通过环境变量TRIGGER_TYPE指定内置触发器类型(http/event/schedule)。
A: 1. 精简函数依赖(仅保留必要包);2. 使用dart compile exe预编译AOT二进制(需在函数目录添加编译脚本);3. 配置平台级别的函数预热机制。
Dart Serverless Runtime提供了高效、轻量的Dart无服务器运行环境,结合Docker容器化技术确保了环境一致性和部署便捷性。无论是快速开发API服务,还是构建复杂的事件驱动应用,该镜像都能满足无服务器架构下的性能和资源需求,是Dart开发者构建Serverless应用的理想选择。
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429