在具有最新cloud-sdk容器的k8s集群上的Jenkins中,当在dockerfile中在FROM之前给出ARG指令时,Docker构建失败?

时间:2019-02-11 16:30:14

标签: docker jenkins kubernetes gcloud google-cloud-sdk

我正在使用Kubernetes管道插件在Kubernetes集群之上运行Jenkins。 我在podTemplate中使用了一个带有最新google/cloud-sdk图像的容器。

使用cloud-sdk将构建的docker映像推送到存储库中。

管道的精简版本:

podTemplate(label: label,
    containers: [
        containerTemplate(name: 'gcloud', image: 'google/cloud-sdk:latest', command: 'cat', ttyEnabled: true),
    ],
    volumes: [
        hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock')
    ]) {

    node(label) {
        ...
        stage('Develop deployment') {
            container('gcloud') {
                withCredentials([file(credentialsId: 'google-service-account-key', variable: 'GOOGLE_APPLICATION_CREDENTIALS')]) {

                    sh """#!/bin/bash
                        set -e

                        # setup gcloud setting 
                        ...

                        docker build --build-arg IMAGE_PREFIX="$GCLOUD_REGION/$GCLOUD_PROJECT" --build-arg TAG=$2 -f $DOCKERFILE -t $1 .

                        # push image to gcloud
                        ...
                    """
                }
            }
        }
    }
}

泊坞窗映像使用ARG为基础映像添加前缀:

ARG IMAGE_PREFIX
ARG TAG

FROM ${IMAGE_PREFIX}/client:${TAG} as some-client
...

docker构建失败,Please provide a source image with来自prior to commit

我已经检查了cloud-sdk映像中的docker版本以及Kubernetes节点中使用的Docker,它们都是最新的,至少它们比引入此功能的版本新。 (Using ARG before FROM)

这里可能是什么问题?

0 个答案:

没有答案