zalando-stups / pierone-cli

DEPRECATED: Convenient command line client for STUPS' Pier One Docker registry
http://docs.stups.io/en/latest/components/pierone.html#command-line-client
Other
10 stars 13 forks source link

dockerpycreds.errors.InitializationError: docker-credential- not installed or not available in PATH #91

Closed posto closed 4 years ago

posto commented 4 years ago

docker-compose fails to pull images if the pierone entry in credHelpers contains an empty string.

$ docker-compose up --build
Building my-docker-image
Traceback (most recent call last):
  File "docker-compose", line 6, in <module>
  File "compose/cli/main.py", line 71, in main
  File "compose/cli/main.py", line 127, in perform_command
  File "compose/cli/main.py", line 1085, in up
  File "compose/cli/main.py", line 1081, in up
  File "compose/project.py", line 527, in up
  File "compose/service.py", line 344, in ensure_image_exists
  File "compose/service.py", line 1084, in build
  File "site-packages/docker/api/build.py", line 260, in build
  File "site-packages/docker/api/build.py", line 307, in _set_auth_headers
  File "site-packages/docker/auth.py", line 310, in get_all_credentials
  File "site-packages/docker/auth.py", line 262, in _resolve_authconfig_credstore
  File "site-packages/docker/auth.py", line 287, in _get_store_instance
  File "site-packages/dockerpycreds/store.py", line 25, in __init__
dockerpycreds.errors.InitializationError: docker-credential- not installed or not available in PATH
[43348] Failed to execute script docker-compose

In the last line you see docker-compose is trying to execute docker-credential- and there is no such executable. The two options are:

$ ls /usr/local/bin/docker-cre*
/usr/local/bin/docker-credential-desktop     
/usr/local/bin/docker-credential-osxkeychain

Changing the pierone.stups.zalan.do entry in ~/.docker/config.json from empty string to "desktop" seems to solve the problem. It looks like some specific docker versions execute docker-credential-<CREDHELPERS-ENTRY-VALUE> and since the value is an empty string, it can't find such an executable file.

# suggested fix
$ cat {
  "auths": { ... },
  "credHelpers": {
    "pierone.stups.zalan.do": "desktop"
  }
}

This issue seems to be related to #86 and #87 . This line seems to create this problem: https://github.com/zalando-stups/pierone-cli/commit/5538128ea049746f5f82f1a867d861155cf98984#diff-c6fd31c08889317fd1a0e4d5b4de35afR177

Details:

$ docker-compose version
docker-compose version 1.24.1, build 4667896b
docker-py version: 3.7.3
CPython version: 3.6.8
$ docker version
docker version
Client: Docker Engine - Community
 Version:           19.03.5
 API version:       1.40
Server: Docker Engine - Community
 Engine:
  Version:          19.03.5
  API version:      1.40 (minimum version 1.12)
aermakov-zalando commented 4 years ago

Fixed in #93.