mirror of https://github.com/docker/compose.git
Merge pull request #77 from orchardup/friendlier-connection-error
Friendlier connection error for docker-osx users
This commit is contained in:
commit
f92317c5ee
|
@ -11,7 +11,7 @@ import yaml
|
||||||
from ..project import Project
|
from ..project import Project
|
||||||
from .docopt_command import DocoptCommand
|
from .docopt_command import DocoptCommand
|
||||||
from .formatter import Formatter
|
from .formatter import Formatter
|
||||||
from .utils import cached_property, docker_url
|
from .utils import cached_property, docker_url, call_silently, is_mac, is_ubuntu
|
||||||
from .errors import UserError
|
from .errors import UserError
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
@ -23,6 +23,28 @@ class Command(DocoptCommand):
|
||||||
try:
|
try:
|
||||||
super(Command, self).dispatch(*args, **kwargs)
|
super(Command, self).dispatch(*args, **kwargs)
|
||||||
except ConnectionError:
|
except ConnectionError:
|
||||||
|
if call_silently(['which', 'docker']) != 0:
|
||||||
|
if is_mac():
|
||||||
|
raise UserError("""
|
||||||
|
Couldn't connect to Docker daemon. You might need to install docker-osx:
|
||||||
|
|
||||||
|
https://github.com/noplay/docker-osx
|
||||||
|
""")
|
||||||
|
elif is_ubuntu():
|
||||||
|
raise UserError("""
|
||||||
|
Couldn't connect to Docker daemon. You might need to install Docker:
|
||||||
|
|
||||||
|
http://docs.docker.io/en/latest/installation/ubuntulinux/
|
||||||
|
""")
|
||||||
|
else:
|
||||||
|
raise UserError("""
|
||||||
|
Couldn't connect to Docker daemon. You might need to install Docker:
|
||||||
|
|
||||||
|
http://docs.docker.io/en/latest/installation/
|
||||||
|
""")
|
||||||
|
elif call_silently(['which', 'docker-osx']) == 0:
|
||||||
|
raise UserError("Couldn't connect to Docker daemon - you might need to run `docker-osx shell`.")
|
||||||
|
else:
|
||||||
raise UserError("""
|
raise UserError("""
|
||||||
Couldn't connect to Docker daemon at %s - is it running?
|
Couldn't connect to Docker daemon at %s - is it running?
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,8 @@ from __future__ import division
|
||||||
import datetime
|
import datetime
|
||||||
import os
|
import os
|
||||||
import socket
|
import socket
|
||||||
|
import subprocess
|
||||||
|
import platform
|
||||||
from .errors import UserError
|
from .errors import UserError
|
||||||
|
|
||||||
|
|
||||||
|
@ -108,3 +110,19 @@ def split_buffer(reader, separator):
|
||||||
|
|
||||||
if len(buffered) > 0:
|
if len(buffered) > 0:
|
||||||
yield buffered
|
yield buffered
|
||||||
|
|
||||||
|
|
||||||
|
def call_silently(*args, **kwargs):
|
||||||
|
"""
|
||||||
|
Like subprocess.call(), but redirects stdout and stderr to /dev/null.
|
||||||
|
"""
|
||||||
|
with open(os.devnull, 'w') as shutup:
|
||||||
|
return subprocess.call(*args, stdout=shutup, stderr=shutup, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
def is_mac():
|
||||||
|
return platform.system() == 'Darwin'
|
||||||
|
|
||||||
|
|
||||||
|
def is_ubuntu():
|
||||||
|
return platform.system() == 'Linux' and platform.linux_distribution()[0] == 'Ubuntu'
|
||||||
|
|
Loading…
Reference in New Issue