阿里云Serverless 中s build -t s.pre.yaml --custom-env '{"GROOT_ENV": "test"}' --dockerfile ./code/Dockerfile
dockerfile 里怎么取不到 GROOT_ENV 这个环境变量 有知道的嘛?
在使用s build
命令构建镜像时,可以通过--custom-env
参数来设置环境变量。但是需要注意的是,这个环境变量是在构建镜像的过程中设置的,它并不会被写入最终的镜像中。因此,你在Dockerfile
中是无法直接获取到这个环境变量的。
如果你想在Dockerfile
中使用这个环境变量,你可以使用以下的方法:
Dockerfile
中,你可以使用ARG
指令来定义一个变量,然后在构建镜像的时候,通过--build-arg
参数来设置这个变量的值。例如:ARG GROOT_ENV
RUN echo $GROOT_ENV
然后,在构建镜像的时候,你可以这样设置:
s build -t s.pre.yaml --custom-env '{"GROOT_ENV": "test"}' --build-arg GROOT_ENV=$GROOT_ENV ./code/Dockerfile
Dockerfile
中使用ENV
指令来设置环境变量,然后在构建镜像的时候,通过--custom-env
参数来设置这个变量的值。例如:ENV GROOT_ENV test
RUN echo $GROOT_ENV
然后,在构建镜像的时候,你可以这样设置:
s build -t s.pre.yaml --custom-env '{"GROOT_ENV": "test"}' ./code/Dockerfile
是的,--custom-env不支持custom container镜像build。你这个场景直接dockerfile 里面写env 就好吧,然后再配合arg 直接docker build 更好点。可以写一个 dockerfile, 通过build 的时候传参数的
https://docs.docker.com/build/guide/build-args/
。此回答来自钉群Serverless 开发者技术学习群。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。