mirror of
https://github.com/docker/compose.git
synced 2025-07-20 12:14:41 +02:00
Merge pull request #4268 from shin-/jtakkala-3765-sysctl-support
Add sysctl option support when creating service
This commit is contained in:
commit
3058e39407
@ -86,6 +86,7 @@ DOCKER_CONFIG_KEYS = [
|
|||||||
'shm_size',
|
'shm_size',
|
||||||
'stdin_open',
|
'stdin_open',
|
||||||
'stop_signal',
|
'stop_signal',
|
||||||
|
'sysctls',
|
||||||
'tty',
|
'tty',
|
||||||
'user',
|
'user',
|
||||||
'userns_mode',
|
'userns_mode',
|
||||||
@ -645,19 +646,24 @@ 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 'healthcheck' in service_dict:
|
if 'sysctls' in service_dict:
|
||||||
service_dict['healthcheck'] = process_healthcheck(
|
service_dict['sysctls'] = build_string_dict(parse_sysctls(service_dict['sysctls']))
|
||||||
service_dict['healthcheck'], service_config.name)
|
|
||||||
|
|
||||||
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])
|
||||||
|
|
||||||
|
service_dict = process_healthcheck(service_dict, service_config.name)
|
||||||
|
|
||||||
return service_dict
|
return service_dict
|
||||||
|
|
||||||
|
|
||||||
def process_healthcheck(raw, service_name):
|
def process_healthcheck(service_dict, service_name):
|
||||||
|
if 'healthcheck' not in service_dict:
|
||||||
|
return service_dict
|
||||||
|
|
||||||
hc = {}
|
hc = {}
|
||||||
|
raw = service_dict['healthcheck']
|
||||||
|
|
||||||
if raw.get('disable'):
|
if raw.get('disable'):
|
||||||
if len(raw) > 1:
|
if len(raw) > 1:
|
||||||
@ -676,7 +682,8 @@ def process_healthcheck(raw, service_name):
|
|||||||
if 'retries' in raw:
|
if 'retries' in raw:
|
||||||
hc['retries'] = raw['retries']
|
hc['retries'] = raw['retries']
|
||||||
|
|
||||||
return hc
|
service_dict['healthcheck'] = hc
|
||||||
|
return service_dict
|
||||||
|
|
||||||
|
|
||||||
def finalize_service(service_config, service_names, version, environment):
|
def finalize_service(service_config, service_names, version, environment):
|
||||||
@ -800,6 +807,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']:
|
||||||
@ -874,11 +882,11 @@ def merge_environment(base, override):
|
|||||||
return env
|
return env
|
||||||
|
|
||||||
|
|
||||||
def split_label(label):
|
def split_kv(kvpair):
|
||||||
if '=' in label:
|
if '=' in kvpair:
|
||||||
return label.split('=', 1)
|
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):
|
||||||
@ -899,8 +907,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):
|
||||||
|
@ -193,6 +193,7 @@
|
|||||||
"restart": {"type": "string"},
|
"restart": {"type": "string"},
|
||||||
"security_opt": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
|
"security_opt": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
|
||||||
"shm_size": {"type": ["number", "string"]},
|
"shm_size": {"type": ["number", "string"]},
|
||||||
|
"sysctls": {"$ref": "#/definitions/list_or_dict"},
|
||||||
"stdin_open": {"type": "boolean"},
|
"stdin_open": {"type": "boolean"},
|
||||||
"stop_signal": {"type": "string"},
|
"stop_signal": {"type": "string"},
|
||||||
"tmpfs": {"$ref": "#/definitions/string_or_list"},
|
"tmpfs": {"$ref": "#/definitions/string_or_list"},
|
||||||
|
@ -167,6 +167,7 @@
|
|||||||
"restart": {"type": "string"},
|
"restart": {"type": "string"},
|
||||||
"security_opt": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
|
"security_opt": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
|
||||||
"shm_size": {"type": ["number", "string"]},
|
"shm_size": {"type": ["number", "string"]},
|
||||||
|
"sysctls": {"$ref": "#/definitions/list_or_dict"},
|
||||||
"stdin_open": {"type": "boolean"},
|
"stdin_open": {"type": "boolean"},
|
||||||
"stop_signal": {"type": "string"},
|
"stop_signal": {"type": "string"},
|
||||||
"stop_grace_period": {"type": "string", "format": "duration"},
|
"stop_grace_period": {"type": "string", "format": "duration"},
|
||||||
|
@ -64,6 +64,7 @@ DOCKER_START_KEYS = [
|
|||||||
'restart',
|
'restart',
|
||||||
'security_opt',
|
'security_opt',
|
||||||
'shm_size',
|
'shm_size',
|
||||||
|
'sysctls',
|
||||||
'userns_mode',
|
'userns_mode',
|
||||||
'volumes_from',
|
'volumes_from',
|
||||||
]
|
]
|
||||||
@ -718,6 +719,7 @@ class Service(object):
|
|||||||
cgroup_parent=options.get('cgroup_parent'),
|
cgroup_parent=options.get('cgroup_parent'),
|
||||||
cpu_quota=options.get('cpu_quota'),
|
cpu_quota=options.get('cpu_quota'),
|
||||||
shm_size=options.get('shm_size'),
|
shm_size=options.get('shm_size'),
|
||||||
|
sysctls=options.get('sysctls'),
|
||||||
tmpfs=options.get('tmpfs'),
|
tmpfs=options.get('tmpfs'),
|
||||||
oom_score_adj=options.get('oom_score_adj'),
|
oom_score_adj=options.get('oom_score_adj'),
|
||||||
mem_swappiness=options.get('mem_swappiness'),
|
mem_swappiness=options.get('mem_swappiness'),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user