• Dockerfiles ENV和ARG的应用


    在写Dockerfile时, ENV和ARG,包括.env都是很容易弄混的概念。让我们对其进行区分。

    .env文件

    和docker-compose.yml配合使用。并不和Dockerfile一起使用

    env_file

    在Dockerfile中使用,当环境变量很多,可食用该参数,指定对应的变量文件。

    ARG

    在Dockerfile中使用,仅仅在build docker image的过程中(包括CMD和ENTRYPOINT)有效,在image被创建和container启动之后,无效。

     如果你在Dockerfile中使用了ARG但并未给定初始值,则在运行docker build的时候未指定该ARG变量,则会失败。

    虽然其在container启动后不再生效,但是使用‘docker history’可以查看到。所以,敏感数据不建议使用ARG.

    设置ARG和使用ARG编译image, 实例如下:

    1.  
      # In the Dockerfile
    2.  
      ARG some_variable_name
    3.  
      # or with a hard-coded default:
    4.  
      #ARG some_variable_name=default_value
    5.  
       
    6.  
      RUN echo "Oh dang look at that $some_variable_name"
    7.  
       
    8.  
      # In the shell command
    9.  
      docker build --build-arg some_variable_name=a_value
    10.  
       
    11.  
      # Then you will get
    12.  
      Oh dang look at that a_value

    ENV

    在Dockerfile中使用,在build docker imag的过程中有效,在image被创建和container启动后作为环境变量依旧也有效,并且可以重写覆盖。printenv可查看其值。

    设置ENV和使用env,实例如下

    1.  
      # no default value
    2.  
      ENV hey
    3.  
      # a default value
    4.  
      ENV foo /bar
    5.  
      # or ENV foo=/bar
    6.  
       
    7.  
      # ENV values can be used during the build
    8.  
      ADD . $foo
    9.  
      # or ADD . ${foo}
    10.  
      # translates to: ADD . /bar
    11.  
       
    12.  
      # Use the following docker commands to set env
    13.  
       
    14.  
      docker run -e "env_var_name=another_value" alpine env
    15.  
      docker run -e env_var_name alpine env
    16.  
      docker run --env-file=env_file_name alpine env

    有时候,ARG和ENV一起使用,实例如下图:

    1.  
      # expect a build-time variable
    2.  
      ARG A_VARIABLE
    3.  
      # use the value to set the ENV var default
    4.  
      ENV an_env_var=$A_VARIABLE
    5.  
      # if not overridden, that value of an_env_var will be available to your containers!
  • 相关阅读:
    ES6rest运算符
    厉害啦,可视化低代码编程平台开源了
    流媒体服务器
    umi的HTML 模板
    reactrouter 中的history
    umi如何在主文件(类似index.html)document.ejs中引入js文件
    开源项目思路
    舌苔黄腻
    [转]IBM GDC,你不会有创新!
    halconrectangle1_domain获取指定矩形区域的图像
  • 原文地址:https://www.cnblogs.com/ExMan/p/13039623.html
Copyright © 2020-2023  润新知