我正在尝试使用 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 插件配置远程存储库的正确方法吗?
答案 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