Sometimes you may encounter below issue while running docker-compose on MacOS.
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 354, in ensure_image_exists
File "compose/service.py", line 1222, in pull
File "compose/progress_stream.py", line 102, in get_digest_from_pull
File "compose/service.py", line 1187, in _do_pull
File "site-packages/docker/api/image.py", line 381, in pull
File "site-packages/docker/auth.py", line 48, in get_config_header
File "site-packages/docker/auth.py", line 322, in resolve_authconfig
File "site-packages/docker/auth.py", line 235, in resolve_authconfig
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-desktop not installed or not available in PATH
[7968] Failed to execute script docker-compose
To fix this issue, first need to check what the config is in ~/.docker. Sometimes the configuration contains below:
cat config.json
{
"stackOrchestrator" : "swarm",
"credsStore" : "desktop",
"experimental" : "disabled",
"auths" : {
}
}
You will find the credsStore
config is desktop. That's why it tries to run docker-credential-desktop
. Just update this config file and change the credsStore to osxkeychain from desktop should resolve the issue.
sed -i~ 's/"desktop"/"osxkeychain"/g' ~/.docker/config.json
New config.json.
{
"stackOrchestrator" : "swarm",
"credsStore" : "osxkeychain",
"experimental" : "disabled",
"auths" : {
}
}
And now if you run the command again, you should not see this issue anymore.
Other solution would be you try to install docker-credential-helper
. But to be honest, it doesn't work for me.