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

问题描述 投票:0回答:1

如何将一个变量值从

.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

Dockefile包含:

FROM centos:6.9

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

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

所以我想要的是将 var1var2

.gitlab-ci.yml
传递到
Dockerfile

docker variables gitlab dockerfile gitlab-ci
1个回答
12
投票

将环境变量从

.gitlab-ci.yml
传递到图像或容器:

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

    • 使用

      docker build --build-arg
      选项
      docker 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}
      

      注意:

      ARG
      指令也可以取默认值:

        ARG var1="default value if var1 was not passed using --build-arg"
      
  • 在运行时(如果该变量由容器使用,即由

    ENTRYPOINT / CMD
    指定的程序):

© www.soinside.com 2019 - 2024. All rights reserved.