0
点赞
收藏
分享

微信扫一扫

hasura ARM版本编译及Docker镜像制作(一)

半夜放水 2021-10-15 阅读 13

hasura 是什么?

引用hasura官方的介绍

给个数据库就能提供GraphQL接口,对比于restful的api来说,是不是时候都不用写接口了呢?

背景调查

因为 hasura官方只有amd64版本的镜像,所以为了让这个能跑在arm服务器上,需要自行编译。

所以我们进行了一番背景调查,以下为背调中牵涉的对象:
hasura 分为三个部分
1)graphql-engine: 真正的server
2)console:web界面
3)cli:命令行工具
实际上我们只需要前两个部分即可,而console为web工程,使用npm run build即可编译,非常简单,我们只需要重点关注server部分即可。现在我们重点分析这个server部分:

  • graphql-engine server 使用haskell语言进行编写,使用 cabal 进行构建;
  • haskell是一个函数式编程语言,编译器为GHC,编译工具一般使用cabal,cabal同时也是项目的管理工具(如包管理,依赖管理)。

也就是说为了编译server,我们需要GHC及cabal,那么这两个工具的arm版本现状如何了?

  • GHC: 无arm版本现成的docker镜像,有预编译的二进制;
  • cabal: 无arm版本现成的docker镜像及二进制文件;

为了不污染环境,并且持久化构建环境,我们准备构建一个docker的镜像,包含ghc及cabal,也就是说,我们两者都需要构建。

总结以下构建步骤:

  1. 准备haskell的ARM版本编译环境(包括GHC编译器及hasura编译所需要的cabal工具);
  2. 使用之前准备好的ARM版本编译环境编译hasura;
  3. 打包成Docker镜像;
举报

相关推荐

0 条评论