graalvmjs cube.js 集成简单说明
实际上我以前也简单写过关于graalvm 集成cube.js 的,最近graalvmjs 提供了独立的模块,我基于独立包创建了一个docker 镜像
尽管cube.js 也提供了docker 镜像,但是相对来说有点太重(包含了比较多的组件,同时很多是不需要的),很多时候我们是需要
自己基于扩展开发的,以下是一个简单的集成(实际上就是替换nodejs 基础镜像为graalvmjs的镜像)
参考配置
- Dockerfile
FROM node:16.20.2-bullseye-slim as builder
WORKDIR /app
ENV NODE_ENV production
COPY package.json /app/package.json
COPY index.js /app/index.js
RUN npm install
FROM dalongrong/graaljs:23.1.0
WORKDIR /app
ENV NODE_ENV production
COPY --from=builder /app/node_modules /app/node_modules
COPY --from=builder /app/index.js /app/index.js
COPY model /app/model
ENTRYPOINT [ "node","index.js" ]
- index.js
const CubejsServer = require('@cubejs-backend/server');
const server = new CubejsServer({});
server.listen().then(({ version, port }) => {
console.log(`🚀 Cube server (${version}) is listening on ${port}`);
}).catch(e => {
console.error('Fatal error during server start: ');
console.error(e.stack || e);
});
- 运行效果
说明
基于graalvmjs 的运行,是一个不错的选择,尤其是需要基于jvm 相关的依赖的时候,实际上我以前也写过实际上可以基于graalvmjs 开发独立的jdbc 驱动,替换默认的基于node addon 的实现,开发以及灵活性上会好很多
参考资料
https://www.cnblogs.com/rongfengliang/p/17716815.html
https://github.com/rongfengliang/cube-test/blob/graalvm/Dockerfile
https://github.com/oracle/graaljs/releases/
https://github.com/rongfengliang/cube-test/tree/graalvm