zoukankan      html  css  js  c++  java
  • ARG 构建参数 & ENV 设置环境变量—— Dockerfile

    ARG 构建参数

    ENV 设置环境变量

    格式有两种:

    • ENV <key> <value>
    • ENV <key1>=<value1> <key2>=<value2>...

    这个指令很简单,就是设置环境变量而已,

    无论是后面的其它指令,如 RUN,还是运行时的应用都可以直接使用这里定义的环境变量。

    ENV VERSION=1.0 DEBUG=on 
        NAME="Happy Feet"
    

    演示了如何换行,以及对含有空格的值用双引号括起来的办法,这和 Shell 下的行为是一致的。 

    定义了环境变量,那么在后续的指令中,就可以使用这个环境变量。

    比如在官方 node 镜像 Dockerfile 中,就有类似这样的代码:

    ENV NODE_VERSION 7.2.0
    
    RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" 
      && curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" 
      && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc 
      && grep " node-v$NODE_VERSION-linux-x64.tar.xz$" SHASUMS256.txt | sha256sum -c - 
      && tar -xJf "node-v$NODE_VERSION-linux-x64.tar.xz" -C /usr/local --strip-components=1 
      && rm "node-v$NODE_VERSION-linux-x64.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt 
      && ln -s /usr/local/bin/node /usr/local/bin/nodejs
    

      

    先定义了环境变量 NODE_VERSION,其后的 RUN 这层里,多次使用 $NODE_VERSION 来进行操作定制

    可以看到,将来升级镜像构建版本的时候,只需要更新 7.2.0 即可,Dockerfile 构建维护变得更轻松了。

    下列指令可以支持环境变量展开: 

    ADDCOPYENVEXPOSEFROMLABELUSERWORKDIRVOLUMESTOPSIGNALONBUILDRUN

    可以从这个指令列表里感觉到,环境变量可以使用的地方很多,很强大

    通过环境变量,我们可以让一份 Dockerfile 制作更多的镜像,只需使用不同的环境变量即可

    ARG 构建参数

    格式:ARG <参数名>[=<默认值>]

    构建参数和 ENV 的效果一样,都是设置环境变量

    不同的是,ARG 所设置的构建环境的环境变量,在将来容器运行时是不会存在这些环境变量的

    但是不要因此就使用 ARG 保存密码之类的信息,因为 docker history 还是可以看到所有值的

    Dockerfile 中的 ARG 指令是定义参数名称,以及定义其默认值

    默认值可以在构建命令 docker build 中用 --build-arg <参数名>=<值> 来覆盖

    在 1.13 之前的版本,要求 --build-arg 中的参数名,必须在 Dockerfile 中用 ARG 定义过了,换句话说,就是 --build-arg 指定的参数,必须在 Dockerfile 中使用了。如果对应参数没有被使用,则会报错退出构建。从 1.13 开始,这种严格的限制被放开,不再报错退出,而是显示警告信息,并继续构建

    这对于使用 CI 系统,用同样的构建流程构建不同的 Dockerfile 的时候比较有帮助,避免构建命令必须根据每个 Dockerfile 的内容修改

  • 相关阅读:
    团队博客----用户需求调研报告
    结对开发----买书问题
    团队开发----NABC分析
    js 中中括号,大括号使用详解
    FileZilla Server 防火墙端口开启设置 windows 2008 win
    在其他的电脑上配置绿色Jre+tomcat运行环境
    工资发给平庸,高薪给予责任。奖金发给成绩,股权分给态度,荣誉颁给理想!
    SSH框架(四) struts2+spring3.0的登陆示例
    SSH框架(三) struts2的登陆示例
    SSH (Struts2+Spring3.0+Hibernate3)框架(二) 框架的配置
  • 原文地址:https://www.cnblogs.com/panpanwelcome/p/12604269.html
Copyright © 2011-2022 走看看