BaaS Functions Service
Node.js 运行时服务 - 为 BaaS Functions 和 Realtime 模块提供运行环境。
🎯 概述
baas-functions-service 是一个独立的 Node.js 服务,提供:
- HTTP 函数执行(端口 3001)
- WebSocket 实时通信(端口 4000)
- 与 Drupal 后端的集成
- PostgreSQL 和 Redis 连接
📦 服务信息
- 容器名:
baas-functions-service - 位置:
docker/nodejs-services/baas-functions/ - 技术栈: Node.js + Express + Socket.IO
- 依赖: PostgreSQL, Redis
🔌 端口配置
| 端口 | 协议 | 用途 |
|---|---|---|
| 3001 | HTTP | Functions API 端点 |
| 4000 | WebSocket | Realtime 实时通信 |
⚙️ 环境变量
基础配置
NODE_ENV: development # 运行环境
PORT: 3001 # HTTP 端口
LOG_LEVEL: info # 日志级别
REALTIME_PORT: 4000 # WebSocket 端口
ENABLE_REALTIME: true # 启用实时功能数据库连接
DATABASE_URL: postgresql://postgres:password@172.20.1.10:5432/drubase
REDIS_URL: redis://172.20.1.20:6379Drupal 集成
DRUPAL_API_URL: http://local.drubase.com
ALLOWED_ORIGINS: http://localhost,http://127.0.0.1
API_KEY_HEADER: X-API-Key
JWT_SECRET: baas_functions_jwt_secret_change_in_production函数限制
DEFAULT_TIMEOUT: 30000 # 默认超时(毫秒)
MAX_TIMEOUT: 300000 # 最大超时(毫秒)
DEFAULT_MEMORY_LIMIT: 128 # 默认内存限制(MB)
MAX_MEMORY_LIMIT: 512 # 最大内存限制(MB)🏗️ 服务架构
Docker Compose 配置
baas-functions:
container_name: baas-functions-service
ports:
- "3001:3001" # HTTP Functions
- "4000:4000" # WebSocket Realtime
networks:
baas_network:
ipv4_address: 172.20.1.40
depends_on:
- pg17 # PostgreSQL
- redis # Redis
deploy:
resources:
limits:
memory: 512M
cpus: "0.5"目录结构
nodejs-services/baas-functions/
├── server.js # 主入口文件
├── src/
│ ├── functions/ # Functions 处理器
│ ├── realtime/ # WebSocket 处理器
│ └── middleware/ # 中间件
├── logs/ # 日志目录
├── package.json # 依赖配置
└── Dockerfile # 镜像构建🚀 使用方式
启动服务
cd drubase-one/docker
docker compose up -d baas-functions查看日志
# 实时日志
docker compose logs -f baas-functions-service
# 日志文件
tail -f docker/nodejs-services/baas-functions/logs/app.log健康检查
# HTTP 端点
curl http://localhost:3001/health
# WebSocket 连接测试
wscat -c ws://localhost:4000📡 API 端点
Functions API
POST /functions/execute
执行自定义函数
curl -X POST http://localhost:3001/functions/execute \
-H "Content-Type: application/json" \
-d '{
"function_name": "my_function",
"params": { "user_id": 123 }
}'Health Check
GET /health
服务健康状态
{
"status": "healthy",
"services": {
"http": "up",
"websocket": "up",
"database": "connected",
"redis": "connected"
}
}🔄 WebSocket 通信
连接建立
const ws = new WebSocket('ws://localhost:4000');
ws.onopen = () => {
console.log('WebSocket 连接已建立');
};订阅频道
ws.send(JSON.stringify({
action: 'subscribe',
channel: 'project_updates',
project_id: 'tenant_7375b0cd_project_6888d012be80c'
}));接收消息
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log('收到消息:', data);
};🔧 开发模式
热重载
服务在开发模式下支持热重载:
volumes:
- ./nodejs-services/baas-functions/src:/app/src
- ./nodejs-services/baas-functions/server.js:/app/server.js修改代码后自动重启。
调试
# 设置调试级别
docker compose restart baas-functions-service
docker compose exec baas-functions-service npm run debug📊 监控和日志
日志配置
logging:
driver: "json-file"
options:
max-size: "10m" # 单个日志文件最大 10MB
max-file: "3" # 保留 3 个日志文件资源限制
deploy:
resources:
limits:
memory: 512M # 最大内存 512MB
cpus: "0.5" # 最大 CPU 50%🔗 相关文档
- BaaS Functions 模块 - Functions 模块文档
- BaaS Realtime 模块 - Realtime 模块文档
- 实时功能配置 - WebSocket 配置指南
Last updated on