如何在Docker Compose中通过环境变量设置布尔值?
在Docker Compose中注入布尔类型的环境变量
问题场景
我需要在Docker Compose的build.no_cache字段中通过环境变量设置布尔值,当前的Compose配置如下:
version: '3.8' services: backend: build: no_cache: ${NO_CACHE}
执行构建命令:
NO_CACHE=true docker compose up
但触发错误:
services.backend.build.no_cache must be a boolean
尝试过将${NO_CACHE}用单引号或双引号包裹,问题依旧。我的Docker版本是:
$ docker -v Docker version 20.10.17, build 100c701
解决方案
Docker Compose会将环境变量传递的"true"/"false"识别为字符串而非布尔值,可通过以下方法解决:
方法1:利用Compose变量替换的默认值语法
通过${VAR:-default}语法定义默认布尔值,命令行传递变量时直接使用原生布尔值形式:
version: '3.8' services: backend: build: no_cache: ${NO_CACHE:-false}
执行构建命令:
NO_CACHE=true docker compose up --build
注:添加
--build确保强制触发构建流程,避免Compose跳过构建步骤。
方法2:通过.env文件定义布尔值
在项目根目录创建.env文件,直接写入布尔值:
NO_CACHE=true
Compose会自动读取该文件并将值识别为布尔类型,原配置无需修改,直接执行命令:
docker compose up --build
方法3:使用命令行参数直接覆盖
无需修改Compose配置,直接在构建命令中添加--no-cache参数:
docker compose up --build --no-cache
内容的提问来源于stack exchange,提问作者BeetleJuice
相关产品推荐
相关产品推荐

