
graphql-server是dictyBase的GraphQL服务器,基于Go语言开发,使用https://github.com/99designs/gqlgen%E5%B7%A5%E5%85%B7%E7%94%9F%E6%88%90%E4%BB%A3%E7%A0%81%E4%BB%A5%E5%8C%B9%E9%85%8DgRPC%E6%A8%A1%E5%9E%8B%E3%80%82%E8%AF%A5%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%95%B4%E5%90%88%E4%BA%86%E7%94%A8%E6%88%B7%E3%80%81%E8%A7%92%E8%89%B2%E3%80%81%E6%9D%83%E9%99%90%E3%80%81%E5%BA%93%E5%AD%98%E3%80%81%E8%AE%A2%E5%8D%95%E7%AD%89%E5%A4%9A%E7%A7%8DgRPC%E6%9C%8D%E5%8A%A1%E5%8F%8Apublication 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端点(默认:"https://betafunc.dictybase.org/publications") [$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文件存储在https://github.com/dictyBase/graphql-schema%E4%BB%93%E5%BA%93%EF%BC%8C%E4%B8%BB%E8%A6%81%E5%8C%85%E5%90%AB%EF%BC%9A
特定类别(如用户)的唯一类型和输入应放在同一目录下的独立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 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务