session-service 是一个用于 cBioPortal 会话管理的 RESTful API 服务,基于 MongoDB 存储会话数据。该服务将会话信息以 JSON 格式持久化,具备通用性,可扩展至任何 JSON 对象的存储与管理。其核心功能是为 cBioPortal 相关应用提供会话数据的创建、查询、更新和删除(CRUD)操作接口。
main_session、virtual_study 等),适配不同业务场景(结果页查询、虚拟研究、比较页查询等)。session_service),支持高可用和可扩展的数据存储。http://[服务地址]:[端口]/swagger-ui.html)。virtual_study)、比较页查询(comparison_session)、自定义基因列表(custom_gene_list)等场景的数据存储。适用于基于 cBioPortal 开发的生物信息学平台、需要管理用户会话数据的 Web 应用,或任何需通过 API 接口存储 JSON 结构数据的场景。
通过 docker-compose 启动服务(默认使用项目根目录下的 docker-compose.yml 配置):
bash# 前台运行(日志实时输出) docker-compose up # 后台运行(detached 模式) docker-compose up -d
后台运行模式下停止服务:
bashdocker-compose down
开发环境中修改代码后,需重建镜像并重启:
bashdocker-compose up --build
服务启动后,访问以下地址验证是否运行正常(返回版本号即表示成功):
bashcurl http://localhost:8080/info
通过 curl 命令测试会话创建接口(默认未启用认证,若启用需添加 --user user:pass 参数):
bashcurl -H "Content-Type: application/json" -X POST http://localhost:8080/api/sessions/test_portal/main_session \ --data '{"title": "我的主门户会话", "description": "这是一个示例会话"}'
成功响应:返回状态码 200 和会话 ID(如 {"id": "57167a52ef86d81afb415aba"})。
默认配置下 MongoDB 端口不对外暴露,需通过容器内部连接:
bash# 进入 MongoDB 容器(容器名默认:session-service_db_1) docker exec -it session-service_db_1 mongo mongodb://localhost:27017
27017)通过 MongoDB Shell 创建默认数据库 session_service:
bashmongo # 进入 MongoDB Shell > use session_service # 创建并切换到数据库 session_service
克隆代码仓库并通过 Maven 编译运行:
bash# 克隆仓库 git clone [***] cd session-service # 编译打包(生成 JAR 包)并启动服务 mvn package -Dpackaging.type=jar && \ java -Dspring.data.mongodb.uri=mongodb://localhost:27017/session-service \ -jar target/session_service-0.1.0.jar
如需部署到 Java Web 容器(如 Tomcat),可生成 WAR 包并自定义配置:
bash# 创建配置文件目录 mkdir src/main/resources/ # 复制自定义配置文件(示例配置见 4.3 节) cp /path/to/custom.config src/main/resources/ # 编译生成 WAR 包 mvn package
通过配置文件(默认路径 src/main/resources/application.properties 或 application.yml)自定义服务行为,支持以下核心参数:
| 参数键 | 说明 | 默认值 |
|---|---|---|
spring.data.mongodb.database | MongoDB 数据库名 | session_service |
spring.data.mongodb.host | MongoDB 主机地址 | localhost |
spring.data.mongodb.port | MongoDB 端口 | 27017 |
server.contextPath | 服务上下文路径(非根路径时配置) | / |
server.port | 服务监听端口 | 8080 |
security.basic.enabled | 是否启用基本认证 | false(默认关闭) |
spring.security.user.name | 基本认证用户名(启用认证时必填) | -(需手动配置) |
spring.security.user.password | 基本认证密码(启用认证时必填) | -(需手动配置) |
通过环境变量覆盖默认配置,优先级高于配置文件:
| 环境变量名 | 说明 | 示例值 |
|---|---|---|
SERVER_PORT | 服务监听端口 | 8090 |
application.properties)properties# MongoDB 配置 spring.data.mongodb.database=session_service spring.data.mongodb.host=mongodb-host spring.data.mongodb.port=27017 # 服务端口与上下文路径 server.port=8081 server.contextPath=/session-service # 启用基本认证 security.basic.enabled=true spring.security.user.name=admin spring.security.user.password=secret123
服务启动后,通过 Swagger UI 查看完整 API 文档:
http://[服务地址]:[端口]/swagger-ui.html
(若启用基本认证,需通过 [***][服务地址]:[端口]/swagger-ui.html 访问)
服务支持以下预定义会话类型,用于区分不同业务场景:
| 类型 | 描述 |
|---|---|
main_session | 表示结果页查询会话 |
virtual_study | 表示从研究摘要页保存的样本子集 |
group | 类似 virtual_study,用于比较页 |
comparison_session | 表示比较页查询会话 |
settings | 表示 cBio 页面配置(通过 page 字段标识页面类型) |
custom_data | 存储研究视图页的自定义图表数据 |
genomic_chart | 表示用户在研究视图页添加的基因组图表 |
custom_gene_list | 表示用户在查询页添加的自定义基因列表 |
请求:POST http://[服务地址]:[端口]/api/sessions/{source}/{type}/
source:会话来源(如 msk_portal,区分不同应用)type:会话类型(需为 6.2 节中定义的有效类型)示例:
bashcurl -H "Content-Type: application/json" --user user:pass -X POST \ http://localhost:8080/api/sessions/msk_portal/main_session \ --data '{"title": "我的主门户会话", "description": "这是一个示例"}'
响应:
200,返回会话 ID
json{"id": "57167a52ef86d81afb415aba"}
400(无效类型或空请求体)请求:GET http://[服务地址]:[端口]/api/sessions/{source}/{type}/
source:会话来源type:会话类型响应:
200,返回会话列表(包含 id、data、source、type)
json[ { "id": "57167a52ef86d81afb415aba", "data": {"title": "我的主门户会话", "description": "这是一个示例"}, "source": "msk_portal", "type": "main_session" } ]
请求:GET http://[服务地址]:[端口]/api/sessions/{source}/{type}/{id}
id:会话 ID(创建会话时返回)响应:
200,返回单个会话详情404(会话不存在)请求:PUT http://[服务地址]:[端口]/api/sessions/{source}/{type}/{id}
示例:
bashcurl -H "Content-Type: application/json" --user user:pass -X PUT \ http://localhost:8080/api/sessions/msk_portal/main_session/57167a52ef86d81afb415aba \ --data '{"title": "更新后的主门户会话", "description": "这是更新示例"}'
响应:
200(无响应体)400(空请求体)或 404(会话不存在)请求:DELETE http://[服务地址]:[端口]/api/sessions/{source}/{type}/{id}
响应:
200(无响应体)404(会话不存在)请求:GET http://[服务地址]:[端口]/api/sessions/{source}/{type}/query?field={field}&value={value}
field:查询字段(如 data.title)value:字段值(URL 编码)示例:
bashcurl --user user:pass "http://localhost:8080/api/sessions/msk_portal/main_session/query?field=data.title&value=我的主门户会话"
响应:状态码 200,返回匹配的会话列表。
source、type 和 id 参数区分大小写(如 MSK_portal 与 msk_portal 视为不同来源)。--user {username}:{password} 传递认证信息。来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429