|
@@ -83,6 +83,7 @@ DOCKER_CONFIG_KEYS = [
|
|
'shm_size',
|
|
'shm_size',
|
|
'stdin_open',
|
|
'stdin_open',
|
|
'stop_signal',
|
|
'stop_signal',
|
|
|
|
+ 'sysctls',
|
|
'tty',
|
|
'tty',
|
|
'user',
|
|
'user',
|
|
'volume_driver',
|
|
'volume_driver',
|
|
@@ -629,6 +630,9 @@ def process_service(service_config):
|
|
if 'extra_hosts' in service_dict:
|
|
if 'extra_hosts' in service_dict:
|
|
service_dict['extra_hosts'] = parse_extra_hosts(service_dict['extra_hosts'])
|
|
service_dict['extra_hosts'] = parse_extra_hosts(service_dict['extra_hosts'])
|
|
|
|
|
|
|
|
+ if 'sysctls' in service_dict:
|
|
|
|
+ service_dict['sysctls'] = build_string_dict(parse_sysctls(service_dict['sysctls']))
|
|
|
|
+
|
|
for field in ['dns', 'dns_search', 'tmpfs']:
|
|
for field in ['dns', 'dns_search', 'tmpfs']:
|
|
if field in service_dict:
|
|
if field in service_dict:
|
|
service_dict[field] = to_list(service_dict[field])
|
|
service_dict[field] = to_list(service_dict[field])
|
|
@@ -757,6 +761,7 @@ def merge_service_dicts(base, override, version):
|
|
md.merge_mapping('labels', parse_labels)
|
|
md.merge_mapping('labels', parse_labels)
|
|
md.merge_mapping('ulimits', parse_ulimits)
|
|
md.merge_mapping('ulimits', parse_ulimits)
|
|
md.merge_mapping('networks', parse_networks)
|
|
md.merge_mapping('networks', parse_networks)
|
|
|
|
+ md.merge_mapping('sysctls', parse_sysctls)
|
|
md.merge_sequence('links', ServiceLink.parse)
|
|
md.merge_sequence('links', ServiceLink.parse)
|
|
|
|
|
|
for field in ['volumes', 'devices']:
|
|
for field in ['volumes', 'devices']:
|
|
@@ -831,11 +836,11 @@ def merge_environment(base, override):
|
|
return env
|
|
return env
|
|
|
|
|
|
|
|
|
|
-def split_label(label):
|
|
|
|
- if '=' in label:
|
|
|
|
- return label.split('=', 1)
|
|
|
|
|
|
+def split_kv(kvpair):
|
|
|
|
+ if '=' in kvpair:
|
|
|
|
+ return kvpair.split('=', 1)
|
|
else:
|
|
else:
|
|
- return label, ''
|
|
|
|
|
|
+ return kvpair, ''
|
|
|
|
|
|
|
|
|
|
def parse_dict_or_list(split_func, type_name, arguments):
|
|
def parse_dict_or_list(split_func, type_name, arguments):
|
|
@@ -856,8 +861,9 @@ def parse_dict_or_list(split_func, type_name, arguments):
|
|
|
|
|
|
parse_build_arguments = functools.partial(parse_dict_or_list, split_env, 'build arguments')
|
|
parse_build_arguments = functools.partial(parse_dict_or_list, split_env, 'build arguments')
|
|
parse_environment = functools.partial(parse_dict_or_list, split_env, 'environment')
|
|
parse_environment = functools.partial(parse_dict_or_list, split_env, 'environment')
|
|
-parse_labels = functools.partial(parse_dict_or_list, split_label, 'labels')
|
|
|
|
|
|
+parse_labels = functools.partial(parse_dict_or_list, split_kv, 'labels')
|
|
parse_networks = functools.partial(parse_dict_or_list, lambda k: (k, None), 'networks')
|
|
parse_networks = functools.partial(parse_dict_or_list, lambda k: (k, None), 'networks')
|
|
|
|
+parse_sysctls = functools.partial(parse_dict_or_list, split_kv, 'sysctls')
|
|
|
|
|
|
|
|
|
|
def parse_ulimits(ulimits):
|
|
def parse_ulimits(ulimits):
|