docker_client.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from __future__ import absolute_import
  2. from __future__ import unicode_literals
  3. import logging
  4. import os
  5. from docker import Client
  6. from docker.errors import TLSParameterError
  7. from docker.utils import kwargs_from_env
  8. from ..const import HTTP_TIMEOUT
  9. from .errors import UserError
  10. log = logging.getLogger(__name__)
  11. def docker_client(version=None):
  12. """
  13. Returns a docker-py client configured using environment variables
  14. according to the same logic as the official Docker client.
  15. """
  16. if 'DOCKER_CLIENT_TIMEOUT' in os.environ:
  17. log.warn("The DOCKER_CLIENT_TIMEOUT environment variable is deprecated. "
  18. "Please use COMPOSE_HTTP_TIMEOUT instead.")
  19. try:
  20. kwargs = kwargs_from_env(assert_hostname=False)
  21. except TLSParameterError:
  22. raise UserError(
  23. "TLS configuration is invalid - make sure your DOCKER_TLS_VERIFY "
  24. "and DOCKER_CERT_PATH are set correctly.\n"
  25. "You might need to run `eval \"$(docker-machine env default)\"`")
  26. if version:
  27. kwargs['version'] = version
  28. kwargs['timeout'] = HTTP_TIMEOUT
  29. return Client(**kwargs)