
jaegertracing/xdock-nodenode-crossdock 是基于 Node.js 环境的集成测试专用镜像,专为跨服务(Cross-Service)集成测试场景设计。该镜像提供了轻量级的 Node.js 运行时环境,并集成了 crossdock 测试框架的核心能力,支持开发者在微服务架构中快速构建、执行跨服务交互的集成测试用例,验证多服务间的接口兼容性、数据流转及业务逻辑正确性。
bashdocker pull node-crossdock:latest
基本命令格式:
bashdocker run -it --rm \ -v /path/to/local/test/scripts:/app/tests \ # 挂载本地测试脚本目录 -e TARGET_SERVICE_URL="[***]" \ # 目标服务地址 -e TEST_TIMEOUT=30s \ # 测试超时时间 node-crossdock:latest \ npm run test /app/tests # 执行测试命令(假设测试脚本入口为 /app/tests/index.js)
说明:
/path/to/local/test/scripts:本地测试脚本目录,需包含 crossdock 测试用例(如使用 mocha、jest 等框架编写的测试文件)。mocha /app/tests、jest /app/tests)。| 环境变量名 | 描述 | 默认值 | 示例值 |
|---|---|---|---|
TARGET_SERVICE_URL | 待测试的目标服务基础 URL | http://localhost:8080 | [***] |
TEST_TIMEOUT | 单条测试用例超时时间 | 30s | 60s |
CROSSDOCK_LOG_LEVEL | 测试框架日志级别(debug/info/warn/error) | info | debug |
TEST_SCRIPT_ENTRY | 测试脚本入口文件路径(容器内路径) | /app/tests/index.js | /app/tests/integration.js |
NODE_ENV | Node.js 运行环境 | test | production |
适用于多服务集成测试场景(如测试 node-service 与 db-service 的交互):
yaml# docker-compose.test.yml version: '3.8' services: test-runner: image: node-crossdock:latest volumes: - ./tests:/app/tests # 挂载本地测试脚本 environment: - TARGET_SERVICE_URL=[***] - TEST_TIMEOUT=45s - CROSSDOCK_LOG_LEVEL=debug depends_on: - node-service - db-service command: npm run test /app/tests node-service: image: your-node-service:latest # 待测试的 Node.js 服务 environment: - DB_HOST=db-service - DB_PORT=5432 depends_on: - db-service db-service: image: postgres:14-alpine # 依赖的数据库服务 environment: - POSTGRES_USER=test - POSTGRES_PASSWORD=test - POSTGRES_DB=test_db
使用方式:
bashdocker-compose -f docker-compose.test.yml up --abort-on-container-exit
测试脚本需遵循 crossdock 测试框架的基本规范,典型结构(以 mocha 为例):
javascript// /app/tests/integration.js const { expect } = require('chai'); const axios = require('axios'); describe('Node Service Integration Test', () => { const targetUrl = process.env.TARGET_SERVICE_URL; it('should return 200 when calling /health', async () => { const res = await axios.get(`${targetUrl}/health`); expect(res.status).to.equal(200); expect(res.data.status).to.equal('ok'); }); it('should create user via POST /users', async () => { const res = await axios.post(`${targetUrl}/users`, { name: 'test' }); expect(res.status).to.equal(201); expect(res.data.id).to.be.a('string'); }); });
axios、chai),建议在本地测试目录中添加 package.json,并通过 volumes 挂载 node_modules 目录(或在镜像构建时预安装)。docker network 或 docker-compose 自动网络),确保 TARGET_SERVICE_URL 可访问。--memory、--cpus 限制容器资源,避免影响其他服务。



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