美文网首页互联网架构
hasura ARM版本编译及Docker镜像制作(一)

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

作者: HanlyJiang | 来源:发表于2020-08-30 21:16 被阅读0次

    hasura 是什么?

    引用hasura官方的介绍

    Hasura GraphQL引擎是一个高性能的GraphQL服务器,可为您提供 Postgres上开箱即用的实时GraphQL API, 响应数据库事件的 Webhook触发器,以及用于业务逻辑处理的 远端Schema
    Hasura可帮助您构建基于Postgres的GraphQL应用程序,或将使用Postgres的现有应用迁移到GraphQL上。

    给个数据库就能提供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镜像;

    相关文章

      网友评论

        本文标题:hasura ARM版本编译及Docker镜像制作(一)

        本文链接:https://www.haomeiwen.com/subject/dtymjktx.html