Custom Container 部署
刚刚我们已经通过 Custom Runtime 部署 来自定义代码的运行时了 , 但是即使通过那种方式 , 我们也无法改变代码运行的容器环境 。 比如我有一段代码 , 只有在 Windows 的 IIS 上才能运行 , 怎么办? 显然 Custom Runtime 部署 固定的容器环境 , 是不满足我们的需求的 。
这时候我们就需要在本地 , 构建我们自己的容器镜像 , 并把它推送到 阿里云的镜像仓库 里去 。 所以启用 Custom Container 部署 , 最重要的先决条件是什么?
安装 docker 并 开通阿里云容器镜像服务
它对应的 serverless-devs 也非常简单:
function: caPort: 9000 runtime: custom-container customContainerConfig: image: registry.cn-hangzhou.aliyuncs.com/som-custom-container/nest-appactions: pre-deploy: # 在部署前执行 , 在你的本地构建镜像 , 所以需要你已经安装好了 docker - component: fc build --use-docker --dockerfile ./code/Dockerfile
customContainerConfig#image 就是你的镜像仓库的地址(我示例中用的公网地址 , 最佳实践为函数计算同地域的VPC镜像地址) , 复制粘贴即可 。
fc build --use-docker --dockerfile ./code/Dockerfile 这个命令 , 你可以理解成一堆 docker 构建发布的命令脚本 。
而 Dockerfile 就是构建镜像的核心了 , 在这里我们可以任意的配置我们的系统环境 。 比如我们要转化操作图集变成pdf文件 , 则预先安装好 ghostscript 。
我们要在 nodejs runtime 中构建类似 Canvas 实现 , 额外安装 build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev.....
这里给出一个 Dockerfile 示例参考:
FROM node:18-alpineRUN mkdir -p /usr/src/botWORKDIR /usr/src/botCOPY package.json yarn.lock /usr/src/bot/# 注册 alpinelinux 镜像地址防止下载过慢RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \\ && apk add --no-cache \\ build-base \\ g++ \\ cairo-dev \\ jpeg-dev \\ pango-dev \\ giflib-dev \\ && apk add --update --repository http://dl-3.alpinelinux.org/alpine/edge/testing \\ libmount \\ ttf-dejavu \\ ttf-droid \\ ttf-freefont \\ ttf-liberation \\ fontconfig \\ && yarn --prodCOPY ./src /usr/src/bot/srcEXPOSE 9000ENTRYPOINT [\"yarn\" \"start\"
这种部署方式最灵活 , 能做到很多上述2个部署方式做不到的事情 , 但是它的冷启动速度也是最慢的 。 原因在于 , 容器镜像依赖的基础环境和应用很容易臃肿 , 这带来了额外的数据下载和解压的时间 。 所以这种部署方式上生产环境 , 往往很多措施来辅助 , 比如 镜像启动加速 , 预留实例 和 单实例多并发 等等功能 , 同时自己在构建时也要做一定的优化 , 详见
结论
- 灵活性(从低到高)
- 单语言&普通的 CRUD -> 预置 Runtime 部署
- 自定义语言or运行版本 -> Custom Runtime 部署
- 自定义容器环境 -> Custom Container 部署
- 冷启动速度(从慢到快)/优化成本(从高到低)
- 小时候|华为p50系列手机巧用这几个功能,轻松教会长辈、玩转数字生活
- 巧用鸿蒙操作系统,轻松教会长辈玩转数字生活
- 摩托罗拉|moto大事还有4天发生,这次准备玩转环保!
- bin|还没学会Python?这份学习资料包让你玩转Python,赶快收下
- 自媒体|分享,这些干货告诉你新手如何玩转自媒体,你也能一个月1w+
- 股票|强制员工五一加班背后:中青宝董事长一边蹭热点 一边减持
- 颠覆囤鲜想象 海信真空冰箱玩转“大容量”
- 让大众汽车变得更“有趣”,CARIAD中国要“玩转”智能化
- 本文转自:中国消费品质量安全小时候|超全投屏教程,轻松玩转多屏共享
- 欧科云链推出链上天眼2.0 个人用户玩转区块链的“护身符”