docker-java: Invalid Auth config file when using credsStore

Using a “credsStore” configuration for auth in ~/.docker/config.json causes AuthConfigFile to fail with an IOException.

com.github.dockerjava.api.exception.DockerClientException: Failed to parse dockerCfgFile
	at com.github.dockerjava.core.DefaultDockerClientConfig.effectiveAuthConfig(DefaultDockerClientConfig.java:268)
	at com.github.dockerjava.core.DockerClientImpl.pullImageCmd(DockerClientImpl.java:215)
Caused by: java.io.IOException: Invalid Auth config file
	at com.github.dockerjava.core.AuthConfigFile.loadConfig(AuthConfigFile.java:146)
	at com.github.dockerjava.core.DefaultDockerClientConfig.effectiveAuthConfig(DefaultDockerClientConfig.java:266)
	... 16 more

After a little debugging it looks like the json parsing fails silently a little earlier in AuthConfigFile.java:

com.fasterxml.jackson.databind.JsonMappingException: Can not instantiate value of type [map type; class java.util.LinkedHashMap, [simple type, class java.lang.String] -> [simple type, class com.github.dockerjava.api.model.AuthConfig]] from String value ('osxkeychain'); no single-String constructor/factory method
 at [Source: config.json; line: 4, column: 3] (through reference chain: java.util.LinkedHashMap["credsStore"])
	at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:148)
	at com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:878)
	at com.fasterxml.jackson.databind.deser.ValueInstantiator._createFromStringFallbacks(ValueInstantiator.java:281)
	at com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.createFromString(StdValueInstantiator.java:284)
	at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:334)
	at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:26)
	at com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringMap(MapDeserializer.java:495)
	at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:341)
	at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:26)
	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3736)
	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2639)
	at com.github.dockerjava.core.AuthConfigFile.loadConfig(AuthConfigFile.java:117)
	at com.github.dockerjava.core.DefaultDockerClientConfig.effectiveAuthConfig(DefaultDockerClientConfig.java:266)
	at com.github.dockerjava.core.DockerClientImpl.pullImageCmd(DockerClientImpl.java:215)

About this issue

  • Original URL
  • State: closed
  • Created 7 years ago
  • Reactions: 6
  • Comments: 17 (6 by maintainers)

Commits related to this issue

Most upvoted comments

Same issue. Gradle build always fails on macOS with latest version of https://github.com/bmuschko/gradle-docker-plugin and docker-java version 3.0.6.

config.json:

{
  "auths": {
    "https://index.docker.io/v1/": {}
  },
  "credsStore": "osxkeychain"
}

The error still happens with version 3.0.14 when using com.bmuschko.docker-remote-api gradle plugin.

~/.docker/config content is

{
  "stackOrchestrator" : "swarm"
}

Docker version is Version 2.0.0.0-mac81 (29211), Engine Version: 18.09.0 Securely store Docker logins in macOS keychain is unchecked in Preference.

Please advise…

plan release soon, seems i solved swarm tests so probably master will be forwarded to 3.1.0 at the same time

Answering my own question: Docker -> preferences -> general :: uncheck the checkbox “Securely store credentials …”

Can we expect a release soon with this fix? Without the fix every gradle build relying on the bmuschko/gradle-docker-plugin is broken.