如何使用 gradle-docker-plugin 将 java docker 镜像推送到私有仓库?

时间:2021-06-25 08:55:48

标签: java docker gradle

我正在尝试使用 gradle 将 docker 映像推送到私有存储库。 gradle-docker-plugin 正是这样做的。使用 docker-java-application 我可以构建一个镜像,但我不能将它推送到我自己的存储库。

在调试日志中,我看到以下行:

[DEBUG] [com.github.dockerjava.core.command.PushImageResultCallback] ResponseItem(stream=null, status=The push refers to repository [docker.io/project-name/project-app], progressDetail=null, progress=null, id=null, from=null, time=null, errorDetail=null, error=null, aux=null)

然后是破坏性错误:

> Could not push image: unauthorized: incorrect username or password

这是有道理的,因为我配置的帐户不是用于 docker.io,而是用于我自己的存储库。

我的 gradle 文件如下所示:

构建脚本:

buildscript {
    dependencies {
        classpath 'com.bmuschko:gradle-docker-plugin:7.0.1'
    }
    ...
}

build.gradle:

plugins {
    id 'java'
    id 'com.bmuschko.docker-java-application'
}
...
mainClassName = 'com.project.app.Main'
...
docker {
    javaApplication {
        baseImage = 'jre-11.0.11_9-alpine'
        ports = [8080]
        jvmArgs = ['-Xms256m', '-Xmx2048m']
    }
    registryCredentials {
        url = 'https://private.repository.example'
        username = 'user'
        password = 'password'
    }
}

我可以在本地构建和运行映像,只有推送失败。这是为 docker-java-application 插件配置远程存储库的正确方法吗?

1 个答案:

答案 0 :(得分:0)

你能不能试试:

docker login https://private.repository.example --username user --password password

然后检查您的 /.docker/config.json 是否有条目:

{
    "auths": {
            "https://index.docker.io/v1/": {},
            "https://private.repository.example" : {}
    },
    "credsStore": "desktop.exe"
}

在那之后 - 删除 "https://index.docker.io/v1/": {} 并重新启动 Docker。 它应该默认所有推和拉都带有 https://private.repository.example