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

如何检测当前shell脚本是否运行在docker build构建过程中

检测逻辑实现方案

你可以通过匹配Docker构建环境专属的cgroup标识 + Docker环境默认文件做组合判断,该方案无需修改Dockerfile,兼容绝大多数Docker版本:

#! /bin/bash

# myscript.sh

if grep -q 'buildkit\|docker/build' /proc/1/cgroup 2>/dev/null && [ -f /.dockerenv ]
then
  echo "I am in a docker build"
else
  echo "I am not in a docker build"
fi

方案说明

  • /.dockerenv是Docker环境的默认生成文件,只要运行在Docker容器内(不管是构建阶段还是运行阶段)都会存在,用于先判断当前是否在Docker环境内
  • Docker旧版Legacy构建引擎启动的RUN容器cgroup路径会包含docker/build关键字,新版默认的BuildKit构建引擎启动的RUN容器cgroup路径会包含buildkit关键字,普通docker run启动的容器不会命中这两个关键字,因此可以精准区分构建阶段和其他运行场景
  • 该逻辑无额外依赖,也不需要修改任何Dockerfile配置,外部调用脚本的用户无感知

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:24:03