You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu构建Airflow Docker镜像报unknown instruction: FUNCTION如何解决

问题诱因

报错的核心原因是Docker构建引擎的语法兼容问题:

  • Airflow 2.3.2版本的官方Dockerfile依赖Docker BuildKit构建引擎的专属语法特性,包括内嵌shell函数定义、Here-Doc多行命令写法,这些特性不被Docker传统经典构建器支持。
  • 不同系统的Docker默认配置存在差异:Mac OS上运行的Docker Desktop默认开启BuildKit能力,因此可以正常解析该Dockerfile;Ubuntu系统下安装的20.10.7版本Docker默认关闭BuildKit,使用经典构建器解析文件时,会把shell脚本块中独立成行的function关键字误识别为Docker原生构建指令,最终抛出unknown instruction: FUNCTION的解析错误。
修复方案

根据实际场景选择以下任意一种方案即可:

  • 临时启用BuildKit构建:执行构建命令前注入环境变量开启BuildKit,命令示例:
DOCKER_BUILDKIT=1 docker build -t your-custom-airflow-image .
  • 永久开启BuildKit:编辑Docker配置文件/etc/docker/daemon.json,添加如下配置:
{
  "features": {
    "buildkit": true
  }
}

保存配置后依次执行systemctl daemon-reload、systemctl restart docker命令重启Docker服务,后续直接执行docker build命令即可正常完成构建。

  • 无BuildKit兼容改造:如果环境暂时无法开启BuildKit,可以手动修改官方Dockerfile,将所有内嵌shell函数、Here-Doc格式的多行命令改写为传统RUN指令下的链式shell命令,移除独立成行的function关键字定义,把函数逻辑合并为连续的shell执行语句。该方案改动成本较高,优先推荐前两种开启BuildKit的方案。

内容的提问来源于stack exchange,提问作者Sachin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 03:03:22