123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- import logging
- import os
- import ssl
- from docker import Client
- from docker import tls
- from ..const import HTTP_TIMEOUT
- log = logging.getLogger(__name__)
- def docker_client():
- """
- Returns a docker-py client configured using environment variables
- according to the same logic as the official Docker client.
- """
- cert_path = os.environ.get('DOCKER_CERT_PATH', '')
- if cert_path == '':
- cert_path = os.path.join(os.environ.get('HOME', ''), '.docker')
- base_url = os.environ.get('DOCKER_HOST')
- api_version = os.environ.get('COMPOSE_API_VERSION', '1.19')
- tls_config = None
- if os.environ.get('DOCKER_TLS_VERIFY', '') != '':
- parts = base_url.split('://', 1)
- base_url = '%s://%s' % ('https', parts[1])
- client_cert = (os.path.join(cert_path, 'cert.pem'), os.path.join(cert_path, 'key.pem'))
- ca_cert = os.path.join(cert_path, 'ca.pem')
- tls_config = tls.TLSConfig(
- ssl_version=ssl.PROTOCOL_TLSv1,
- verify=True,
- assert_hostname=False,
- client_cert=client_cert,
- ca_cert=ca_cert,
- )
- if 'DOCKER_CLIENT_TIMEOUT' in os.environ:
- log.warn('The DOCKER_CLIENT_TIMEOUT environment variable is deprecated. Please use COMPOSE_HTTP_TIMEOUT instead.')
- return Client(base_url=base_url, tls=tls_config, version=api_version, timeout=HTTP_TIMEOUT)
|