Closed timfeirg closed 2 years ago
docker build 如果要透传系统 env, 需要类似下方的写法:
ARG FOO ENV FOO=$FOO # docker build --build-arg FOO=${FOO}
因此目前 lain build 并不支持将系统 env 传入 docker build, 需要在其上做解析和参数适配才行.
lain 会对 prepare.env / build.env 做解析, 将所有 ${xxx} 式的变量都拿出来, 然后对照系统 env 做检查, 然后作为 --build-arg 进行透传.
${xxx}
--build-arg
另外, 这也表明目前文档里提供的 build.env 示范是个错误写法, 实际上目前并不会自动获取 system env.
@kxxoling
解析变量的时候, 规则可参考 docker build 的 expansion process: https://github.com/moby/buildkit/blob/master/frontend/dockerfile/shell/lex.go#L312
docker build 如果要透传系统 env, 需要类似下方的写法:
因此目前 lain build 并不支持将系统 env 传入 docker build, 需要在其上做解析和参数适配才行.
开发方案
lain 会对 prepare.env / build.env 做解析, 将所有
${xxx}
式的变量都拿出来, 然后对照系统 env 做检查, 然后作为--build-arg
进行透传.另外, 这也表明目前文档里提供的 build.env 示范是个错误写法, 实际上目前并不会自动获取 system env.
@kxxoling