我构建自己的docker镜像,并在Heroku上运行它们。这非常好用,下面是一个Docker示例文件:
FROM node:14-alpine
WORKDIR /app
COPY ./ncc/web ./
CMD node ./index.js
问题是,在运行node时,我也想使用Jemalloc来更好地管理内存。我过去在使用普通的node dynos (不是docker图像)时使用过这个Jemalloc构建包,它工作得很好:
https://github.com/gaffneyc/heroku-buildpack-jemalloc
但是,如果我理解正确的话,构建包和docker镜像是不是不兼容?所以这个构建包不会自动从我的镜像中可用?
有没有办法让构建包在我的镜像中运行?
如果没有,有人知道我如何在我的实例中安装和使用jemalloc吗?
发布于 2020-12-23 08:05:07
我想Cloud Native Buildpacks就是你所需要的。Cloud Native Buildpack生成Docker图像作为输出,这意味着您甚至不需要Dockerfile
。
heroku/buildpacks:18
CNB构建器映像包括heroku/nodejs
构建包。但您需要手动添加jemalloc构建包。因为jemalloc是一个老式的构建包(即不是Cloud Naitve),所以你需要使用CNB shim。通过这种方式,您可以使用以下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
https://stackoverflow.com/questions/65417162
复制相似问题