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.
$ 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)
docker-compose
fails to pull images if the pierone entry in credHelpers contains an empty string.In the last line you see docker-compose is trying to execute
docker-credential-
and there is no such executable. The two options are: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 executedocker-credential-<CREDHELPERS-ENTRY-VALUE>
and since the value is an empty string, it can't find such an executable file.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: