Merge pull request #6352 from hartwork/issue-6302-stop-run-from-leaving-restarting-containers-behind

Fix one-off commands for "restart: unless-stopped" (fixes #6302)
This commit is contained in:
Joffrey F 2018-11-26 15:25:32 -08:00 committed by GitHub
commit 2975b5a279
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 5 deletions

View File

@ -872,7 +872,7 @@ class TopLevelCommand(object):
else:
command = service.options.get('command')
container_options = build_container_options(options, detach, command)
container_options = build_one_off_container_options(options, detach, command)
run_one_off_container(
container_options, self.project, service, options,
self.toplevel_options, self.project_dir
@ -1267,7 +1267,7 @@ def build_action_from_opts(options):
return BuildAction.none
def build_container_options(options, detach, command):
def build_one_off_container_options(options, detach, command):
container_options = {
'command': command,
'tty': not (detach or options['-T'] or not sys.stdin.isatty()),
@ -1288,8 +1288,8 @@ def build_container_options(options, detach, command):
[""] if options['--entrypoint'] == '' else options['--entrypoint']
)
if options['--rm']:
container_options['restart'] = None
# Ensure that run command remains one-off (issue #6302)
container_options['restart'] = None
if options['--user']:
container_options['user'] = options.get('--user')

View File

@ -171,7 +171,10 @@ class CLITestCase(unittest.TestCase):
'--workdir': None,
})
assert mock_client.create_host_config.call_args[1]['restart_policy']['Name'] == 'always'
# NOTE: The "run" command is supposed to be a one-off tool; therefore restart policy "no"
# (the default) is enforced despite explicit wish for "always" in the project
# configuration file
assert not mock_client.create_host_config.call_args[1].get('restart_policy')
command = TopLevelCommand(project)
command.run({