diff --git a/fig/cli/command.py b/fig/cli/command.py index b3e0583e7..2bece9139 100644 --- a/fig/cli/command.py +++ b/fig/cli/command.py @@ -3,11 +3,13 @@ import logging import os import re import yaml +import socket from ..project import Project from .docopt_command import DocoptCommand from .formatter import Formatter from .utils import cached_property +from .errors import UserError log = logging.getLogger(__name__) @@ -16,8 +18,26 @@ class Command(DocoptCommand): def client(self): if os.environ.get('DOCKER_URL'): return Client(os.environ['DOCKER_URL']) - else: - return Client() + + socket_path = '/var/run/docker.sock' + tcp_host = '127.0.0.1' + tcp_port = 4243 + + if os.path.exists(socket_path): + return Client('unix://%s' % socket_path) + + try: + s = socket.socket() + s.connect((tcp_host, tcp_port)) + s.close() + return Client('http://%s:%s' % (tcp_host, tcp_port)) + except: + pass + + raise UserError(""" + Couldn't find Docker daemon - tried %s and %s:%s. + If it's running elsewhere, specify a url with DOCKER_URL. + """ % (socket_path, tcp_host, tcp_port)) @cached_property def project(self):