我构建了自己的docker映像,并在Heroku上运行它们。这非常有效,下面是一个Docker文件示例:
FROM node:14-alpine
WORKDIR /app
COPY ./ncc/web ./
CMD node ./index.js
问题是,在运行node时,我还想使用Jemalloc来更好地管理内存。我在过去使用普通节点dynos(而不是docker镜像(时使用过这个Jemalloc构建包,它非常有效:
https://github.com/gaffneyc/heroku-buildpack-jemalloc
如果我理解正确,但是构建包和docker镜像不兼容?所以这个构建包不会自动从我的图像中获得吗?
有没有办法让构建包在我的图像中运行?
如果没有,有人知道我如何在我的实例中安装和使用jemalloc吗?
我认为云原生构建包正是您所需要的。Cloud Native Buildpacks生成Docker映像作为输出,这意味着您甚至不需要Dockerfile
。
heroku/buildpacks:18
CNB构建器映像包括heroku/nodejs
构建包。但是您需要手动添加jemalloc构建包。由于jemalloc是一个老式的构建包(即不是Cloud Naitve(,您需要使用CNB填充程序。通过这种方式,您可以使用以下URL引用构建包:
https://buildpack-registry.heroku.com/cnb/gaffneyc/jemalloc
所有这些都说明了,并且安装了Pack CLI,您应该能够运行:
$ pack build --builder heroku/buildpacks:18 --buildpack heroku/nodejs,https://buildpack-registry.heroku.com/cnb/gaffneyc/jemalloc my app