如何将变量从.gitlab.ci.yml传递给Dockerfile

时间:2020-10-07 16:30:03

标签: docker variables gitlab dockerfile gitlab-ci

如何将一个变量值从.gitlab-ci.yml传递到Dockerfile

例如 .gitlab-ci.yml 包含:

variables:
  var1: ex_variable_1
  var2: ex_variable_1

stages:
  - build

build:
  stage: build
  script:
    - sudo docker build . -t ${CI_PROJECT_PATH_SLUG}
                          --build-arg var1
                          --build-arg var2
    - sudo docker run -dit --name ${CI_PROJECT_PATH_SLUG} --cap-add=NET_ADMIN ${CI_PROJECT_PATH_SLUG}:latest

文档文件 包含:

FROM centos:6.9

ENV var1 ${var1}
ENV var2 ${var2}

RUN echo "Print var1 $var1"
RUN echo "Print var2 $var2

所以我想要的是将 var1 var2 .gitlab-ci.yml传递到Dockerfile

1 个答案:

答案 0 :(得分:1)

要将环境变量从.gitlab-ci.yml传递到图像或容器:

  • 在构建时(如果该变量由Dockerfile使用):

    • 使用docker build --build-arg optiondocker build --build-arg var1="$var1"

    • 这样更改您的Dockerfile:

        FROM centos:6.9
        ARG var1
        ARG var2
      
        RUN echo "Print var1 $var1"
        RUN echo "Print var2 $var2
      
        # The following is optional − only useful if you want to
        # keep the environment variables at runtime (docker run)
        ENV var1=${var1}
        ENV var2=${var2}
      

      注意:the ARG instruction也可以采用默认值:

        ARG var1="default value if var1 was not passed using --build-arg"
      
  • 在运行时(如果变量由容器使用,即由ENTRYPOINT / CMD指定的程序使用):