如何将一个变量值从
.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
所以我想要的是将 var1 和 var2 从
.gitlab-ci.yml
传递到 Dockerfile
。
将环境变量从
.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
指定的程序):
docker run -e
CLI 选项:docker run -e var1="$var1"
。