GitLab CI/CD任务向Docker传递环境变量运行失败该如何解决
错误原因
- 变量名引用不匹配
你在GitLab CI全局变量中声明的镜像名称、标签变量是IMAGE和IMAGE_TAG,但在docker-image任务中拼接DOCKER_IMAGE_VERSION时,错误使用了不存在的JDK_IMAGE、JDK_IMAGE_TAG变量,直接导致DOCKER_IMAGE_VERSION取值为空。 - 未显式传递CI变量到Docker构建流程
GitLab CI的变量不会自动同步到docker build的构建上下文,即使Dockerfile中定义了同名ARG参数,也需要在执行构建命令时通过--build-arg参数显式传入值才可以正常识别。
修正步骤
- 修正GitLab CI配置中的变量引用
variables: IMAGE : "openjdk" IMAGE_TAG : "11-slim" docker-image: extends: .build variables: DOCKER_IMAGE_VERSION : ${IMAGE}:${IMAGE_TAG}
- 在docker build命令中添加参数传递变量
修改你.build扩展模板中的docker build执行语句,添加--build-arg参数传入变量:
docker build --build-arg DOCKER_IMAGE_VERSION=${DOCKER_IMAGE_VERSION} -t <自定义镜像名称> .
你的Dockerfile中ARG定义在FROM之前的写法是正确的,不需要调整。
内容的提问来源于stack exchange,提问作者Nick Barton-Wells
相关产品推荐
相关产品推荐

