pass system env to docker build
Closed this issue · 1 comments
timfeirg commented
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
进行透传.
另外, 这也表明目前文档里提供的 build.env 示范是个错误写法, 实际上目前并不会自动获取 system env.
timfeirg commented
解析变量的时候, 规则可参考 docker build 的 expansion process: https://github.com/moby/buildkit/blob/master/frontend/dockerfile/shell/lex.go#L312