graphql-server是dictyBase的GraphQL服务器,基于Go语言开发,使用gqlgen工具生成代码以匹配gRPC模型。该服务器整合了用户、角色、权限、库存、订单等多种gRPC服务及publication API端点,提供统一的GraphQL查询和变更接口,并支持通过命令行进行配置与日志管理。
作为后端GraphQL服务,适用于需要整合多种gRPC服务和API端点,提供统一数据查询与变更能力的场景,尤其适合dictyBase生态系统中需要处理用户、权限、库存等数据的应用。
NAME: graphql-server - graphql-server后端命令行工具 USAGE: graphql-server [全局选项] 命令 [命令选项] [参数...] VERSION: 1.0.0 COMMANDS: start-server 启动graphql-server后端服务 help, h 显示命令列表或单个命令帮助 GLOBAL OPTIONS: --log-format value 日志输出格式,可选json或text(默认:"json") --log-level value 应用日志级别(默认:"error") --help, -h 显示帮助 --version, -v 打印版本信息
start-server子命令用于启动GraphQL服务器,支持配置各gRPC服务连接参数及API端点:
NAME: graphql-server start-server - 启动graphql-server后端服务 USAGE: graphql-server start-server [命令选项] [参数...] OPTIONS: --user-grpc-host value, --uh value 用户gRPC主机 [$USER_API_SERVICE_HOST] --user-grpc-port value, --up value 用户gRPC端口 [$USER_API_SERVICE_PORT] --role-grpc-host value, --rh value 角色gRPC主机 [$ROLE_API_SERVICE_HOST] --role-grpc-port value, --rp value 角色gRPC端口 [$ROLE_API_SERVICE_PORT] --permission-grpc-host value, --ph value 权限gRPC主机 [$PERMISSION_API_SERVICE_HOST] --permission-grpc-port value, --pp value 权限gRPC端口 [$PERMISSION_API_SERVICE_PORT] --publication-api value, --pub value publication API端点(默认:"[***]") [$PUBLICATION_API_ENDPOINT] --stock-grpc-host value, --sh value 库存gRPC主机 [$STOCK_API_SERVICE_HOST] --stock-grpc-port value, --sp value 库存gRPC端口 [$STOCK_API_SERVICE_PORT] --order-grpc-host value, --oh value 订单gRPC主机 [$ORDER_API_SERVICE_HOST] --order-grpc-port value, --op value 订单gRPC端口 [$ORDER_API_SERVICE_PORT]
gqlgen依赖GraphQL schema生成代码,schema文件存储在dictyBase/graphql-schema仓库,主要包含:
特定类别(如用户)的唯一类型和输入应放在同一目录下的独立schema文件中。
更新gqlgen.yml:
schema:字段添加新schema文件路径运行生成命令:
bashgo generate ./...
该命令会重建生成文件,可能需要几分钟。
注意事项:
generated包):
gofunc (r *Resolver) User() generated.UserResolver { return &userResolver{r} }
添加新schema并生成代码后,需进行以下重构:
ServiceMap中添加条目;若添加API端点,需更新RunGraphQLServer手动注册(参考Publication示例),并测试服务器初始化时的端点GetUserClient)Permission())放入resolver.go并调整格式(q *QueryResolver)接收器,变更使用(m *MutationResolver)resolver子目录(参考user目录),必要时更新包名使用errorutils包添加带自定义扩展的错误,便于前端处理,参考共享解析器示例。
. ├── README.md ├── build │ └── Dockerfile ├── cmd │ └── graphql-server │ └── main.go ├── deployments │ └── charts │ └── graphql-server │ ├── Chart.yaml │ ├── templates │ │ ├── NOTES.txt │ │ ├── _helpers.tpl │ │ ├── deployment.yaml │ │ └── service.yaml │ └── values.yaml ├── go.mod ├── go.sum ├── gqlgen.yml ├── graphql-server ├── internal │ ├── app │ │ ├── server │ │ │ └── server.go │ │ └── validate │ │ └── validate.go │ ├── graphql │ │ ├── generated │ │ │ └── generated.go │ │ ├── models │ │ │ ├── models_gen.go │ │ │ └── timestamp.go │ │ └── resolver │ │ ├── permission.go │ │ ├── resolver.go │ │ ├── role.go │ │ ├── user │ │ │ ├── permission.go │ │ │ ├── role.go │ │ │ └── user.go │ │ └── user.go │ └── registry │ └── registry.go └── scripts └── gqlgen.go
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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