elixircloud/prowes本镜像是一个轻量级代理服务,专为全球基因组与健康联盟(GA4GH)工作流执行服务(WES)设计,核心功能是在WES请求的处理流程中注入自定义中间件。通过该代理,用户可灵活扩展GA4GH WES服务的功能,如添加认证授权、请求日志记录、数据转换、流量控制等自定义逻辑,而无需修改后端WES服务本身。适用于需要定制化WES请求处理流程的科研机构、生物信息平台及***健康数据处理系统。
/service-info、/runs、/runs/{run_id}等bashdocker pull [镜像仓库地址]/ga4gh-wes-proxy:latest # 示例:docker pull ghcr.io/example/ga4gh-wes-proxy:v1.2.0
bashdocker run -d \ --name wes-proxy \ -p 8080:8080 \ # 代理服务端口 -e WES_BACKEND_URL="[***]" \ # 后端WES服务地址 -e LOG_LEVEL="info" \ # 日志级别(debug/info/warn/error) -v ./middleware-config.yaml:/app/config/middleware.yaml \ # 挂载中间件配置文件 [镜像仓库地址]/ga4gh-wes-proxy:latest
yamlversion: '3.8' services: wes-proxy: image: [镜像仓库地址]/ga4gh-wes-proxy:latest container_name: wes-proxy ports: - "8080:8080" environment: - WES_BACKEND_URL=[***] - PROXY_PORT=8080 - LOG_LEVEL=info - HEALTH_CHECK_INTERVAL=30s # 健康检查间隔 volumes: - ./middleware-config.yaml:/app/config/middleware.yaml - ./logs:/app/logs # 挂载日志目录 depends_on: - wes-backend restart: unless-stopped wes-backend: image: ga4gh/wes-ga4gh:latest # 示例后端WES服务 ports: - "8000:8000"
| 参数名 | 描述 | 默认值 | 可选值 |
|---|---|---|---|
WES_BACKEND_URL | 后端WES服务基础URL | 无(必填) | 符合GA4GH WES规范的URL |
PROXY_PORT | 代理服务监听端口 | 8080 | 1-65535 |
LOG_LEVEL | 日志输出级别 | info | debug/info/warn/error |
MIDDLEWARE_CONFIG | 中间件配置文件路径 | /app/config/middleware.yaml | 容器内文件路径 |
HEALTH_CHECK_PATH | 健康检查接口路径 | /health | 有效的HTTP路径 |
HEALTH_CHECK_INTERVAL | 健康检查间隔(容器内) | 30s | 如10s, 1m |
yaml# middleware-config.yaml示例 middlewares: - name: "logging" # 内置日志中间件 type: "logging" config: log_path: "/app/logs/wes-proxy.log" log_format: "json" # text/json include_request_body: true # 是否记录请求体 include_response_body: false # 是否记录响应体 - name: "jwt-auth" # JWT认证中间件 type: "auth.jwt" config: jwks_url: "[***]" required_claims: # 必须包含的JWT声明 - "scope:wes.execute" exclude_paths: # 排除认证的路径 - "/service-info" - name: "request-validator" # 请求验证中间件 type: "validation" config: schema_path: "/app/schemas/wes-request.schema.json" # 自定义请求JSON Schema
启动代理服务后,访问健康检查接口:
bashcurl http://localhost:8080/health # 预期响应:{"status": "healthy", "backend_connected": true}
验证WES服务代理:
bashcurl http://localhost:8080/service-info # 应返回后端WES服务的service-info响应,并包含X-Proxy: ga4gh-wes-proxy头
如需开发自定义中间件,请参考官方GitHub仓库的中间件开发文档,支持Python(通过Flask中间件接口)和Go(通过HTTP Handler接口)两种开发方式。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务