能否将Google Cloud Function从Ubuntu 22切换至Ubuntu 18?或安装ffmpeg?
第二代Cloud Functions的Ubuntu版本切换与ffmpeg安装方案
能否切换回Ubuntu 18?
第二代Google Cloud Functions的基础镜像与指定的运行时版本绑定:
- Ubuntu 18对应已停止官方支持的旧运行时(如Node.js 16及更早、Python 3.8及更早),你可以通过在
firebase.json或函数配置中指定这些旧运行时版本,来切换到Ubuntu 18镜像。 - 但强烈不推荐此操作:旧运行时不再接收安全补丁和功能更新,存在明确的安全风险,官方建议始终使用受支持的新版本运行时(对应Ubuntu 22镜像)。
如何在Ubuntu 22环境安装ffmpeg?
第二代函数支持自定义构建流程,以下两种方法可实现部署时自动安装ffmpeg:
方法1:使用自定义Dockerfile(推荐)
- 在函数目录下创建
Dockerfile,基于对应运行时的官方镜像添加ffmpeg安装步骤,以Node.js 20为例:FROM node:20-bullseye WORKDIR /workspace # 安装函数依赖 COPY package*.json ./ RUN npm install # 复制函数代码 COPY . . # 安装ffmpeg并清理缓存 RUN apt-get update && apt-get install -y --no-install-recommends ffmpeg \ && rm -rf /var/lib/apt/lists/* CMD ["npm", "start"] - 在
firebase.json中配置使用该Dockerfile:{ "functions": { "source": "functions", "docker": { "file": "Dockerfile" } } } - 执行常规部署命令即可:
firebase deploy --only functions,部署流程会自动构建包含ffmpeg的镜像。
方法2:通过Cloud Build配置添加构建步骤
若不想使用Dockerfile,可在函数目录下创建cloudbuild.yaml,在构建阶段插入ffmpeg安装命令:
steps: - name: 'gcr.io/cloud-builders/npm' args: ['install'] - name: 'ubuntu:22.04' args: ['apt-get', 'update', '-y'] - name: 'ubuntu:22.04' args: ['apt-get', 'install', '-y', 'ffmpeg'] - name: 'gcr.io/cloud-builders/firebase' args: ['deploy', '--only', 'functions']
部署时执行:gcloud builds submit --config cloudbuild.yaml触发构建与部署。
内容的提问来源于stack exchange,提问作者Asher A
相关产品推荐
相关产品推荐

