Преглед на файлове

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)
Joffrey F преди 7 години
родител
ревизия
2975b5a279
променени са 2 файла, в които са добавени 8 реда и са изтрити 5 реда
  1. 4 4
      compose/cli/main.py
  2. 4 1
      tests/unit/cli_test.py

+ 4 - 4
compose/cli/main.py

@@ -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')

+ 4 - 1
tests/unit/cli_test.py

@@ -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({