docker_client.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  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. Please use COMPOSE_HTTP_TIMEOUT instead.')
  18. try:
  19. kwargs = kwargs_from_env(assert_hostname=False)
  20. except TLSParameterError:
  21. raise UserError(
  22. 'TLS configuration is invalid - make sure your DOCKER_TLS_VERIFY and DOCKER_CERT_PATH are set correctly.\n'
  23. 'You might need to run `eval "$(docker-machine env default)"`')
  24. if version:
  25. kwargs['version'] = version
  26. kwargs['timeout'] = HTTP_TIMEOUT
  27. return Client(**kwargs)