openruntimes/rubyRuby Serverless Runtime 是一个专为 Ruby 应用设计的轻量级 Serverless 运行时环境。该镜像提供了 Ruby 代码在无服务器架构(Serverless)中执行所需的完整运行时支持,包括函数加载、事件处理、资源管理等核心能力。主要用途是作为 Ruby 语言 Serverless 函数(如 AWS Lambda、Azure Functions、Google Cloud Functions 等)的本地开发、测试及部署载体,简化 Serverless 应用的开发与运维流程。
Gemfile 并安装依赖(支持 bundle install 自动执行)。通过 Docker Hub 或私有仓库拉取镜像:
bashdocker pull ruby-serverless-runtime:latest # 最新版本(默认 Ruby 3.2) # 或指定 Ruby 版本(如 3.0) docker pull ruby-serverless-runtime:3.0
docker run 命令)假设本地函数代码目录为 ./my-ruby-function,结构如下:
my-ruby-function/ ├── Gemfile # 依赖定义 └── handler.rb # 函数代码,含入口方法 `handler`
handler.rb 示例代码:
rubydef handler(event:, context:) { statusCode: 200, body: "Hello from Ruby Serverless! Event: #{event.inspect}" } end
启动容器执行函数:
bashdocker run -it --rm \ -v $(pwd)/my-ruby-function:/task \ # 挂载本地代码到容器内 /task 目录 -e FUNCTION_HANDLER=handler.handler \ # 指定函数入口(文件名.方法名) -e RUBY_VERSION=3.2 \ # 可选,指定 Ruby 版本(默认 3.2) -e LOG_LEVEL=INFO \ # 日志级别(默认 INFO) ruby-serverless-runtime:latest
通过环境变量 TRIGGER=HTTP 启用 HTTP 触发器,暴露端口 8080 接收 HTTP 请求:
bashdocker run -it --rm \ -v $(pwd)/my-ruby-function:/task \ -e FUNCTION_HANDLER=handler.handler \ -e TRIGGER=HTTP \ -p 8080:8080 \ # 映射容器 8080 端口到本地 ruby-serverless-runtime:latest
启动后可通过 curl http://localhost:8080 触发函数。
创建 docker-compose.yml:
yamlversion: '3.8' services: ruby-serverless: image: ruby-serverless-runtime:3.2 volumes: - ./my-ruby-function:/task # 挂载本地代码 environment: - FUNCTION_HANDLER=handler.handler # 函数入口 - TRIGGER=HTTP # 启用 HTTP 触发器 - LOG_LEVEL=DEBUG # 调试模式日志 - RUBYOPT=-W0 # Ruby 运行参数(禁用警告) ports: - "8080:8080" # HTTP 端口映射 restart: unless-stopped # 开发环境自动重启
启动服务:
bashdocker-compose up -d
| 变量名 | 描述 | 默认值 | 示例值 |
|---|---|---|---|
FUNCTION_HANDLER | 函数入口(格式:文件名.方法名) | handler.handler | index.run |
RUBY_VERSION | 指定 Ruby 版本(需镜像支持) | 3.2 | 2.7, 3.1 |
TRIGGER | 触发器类型(EVENT/HTTP/QUEUE) | EVENT | HTTP |
LOG_LEVEL | 日志级别(DEBUG/INFO/WARN/ERROR) | INFO | DEBUG |
TIMEOUT | 函数超时时间(秒) | 3 | 10 |
BUNDLE_INSTALL | 是否自动安装依赖(true/false) | true | false(生产环境) |
/task 目录(运行时自动加载该目录下代码)。/.bundle 目录到本地(缓存 bundle install 结果,加速启动):
bashdocker run -v $(pwd)/.bundle:/.bundle ...
-p 8080:8080)。--network 加入现有网络:
bashdocker run --network my-network ... # 加入名为 my-network 的网络
3.2.2),而非 latest,避免版本变更风险。Gemfile 变更后需重启容器(开发模式下可启用 BUNDLE_AUTO_UPDATE=true 自动更新依赖)。--memory 和 --cpus 限制资源(模拟云端函数资源配额):
bashdocker run --memory=128m --cpus=0.5 ... # 限制 128MB 内存、0.5 CPU 核心

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务