diff --git a/compose/cli/main.py b/compose/cli/main.py
index c69f49c7f..4de7c5caa 100644
--- a/compose/cli/main.py
+++ b/compose/cli/main.py
@@ -435,7 +435,7 @@ class TopLevelCommand(object):
                               not supported in API < 1.25)
         """
         environment = Environment.from_env_file(self.project_dir)
-        use_cli = not environment.get_boolean('COMPOSE_EXEC_NO_CLI')
+        use_cli = not environment.get_boolean('COMPOSE_INTERACTIVE_NO_CLI')
         index = int(options.get('--index'))
         service = self.project.get_service(options['SERVICE'])
         detach = options['-d']
@@ -794,7 +794,7 @@ class TopLevelCommand(object):
             command = service.options.get('command')
 
         container_options = build_container_options(options, detach, command)
-        run_one_off_container(container_options, self.project, service, options)
+        run_one_off_container(container_options, self.project, service, options, self.project_dir)
 
     def scale(self, options):
         """
@@ -1201,7 +1201,7 @@ def build_container_options(options, detach, command):
     return container_options
 
 
-def run_one_off_container(container_options, project, service, options):
+def run_one_off_container(container_options, project, service, options, project_dir='.'):
     if not options['--no-deps']:
         deps = service.get_dependency_names()
         if deps:
@@ -1228,10 +1228,13 @@ def run_one_off_container(container_options, project, service, options):
         if options['--rm']:
             project.client.remove_container(container.id, force=True, v=True)
 
+    environment = Environment.from_env_file(project_dir)
+    use_cli = not environment.get_boolean('COMPOSE_INTERACTIVE_NO_CLI')
+
     signals.set_signal_handler_to_shutdown()
     try:
         try:
-            if IS_WINDOWS_PLATFORM:
+            if IS_WINDOWS_PLATFORM or use_cli:
                 service.connect_container_to_networks(container)
                 exit_code = call_docker(["start", "--attach", "--interactive", container.id])
             else:
diff --git a/tests/unit/cli_test.py b/tests/unit/cli_test.py
index 19f6c9782..d078614e6 100644
--- a/tests/unit/cli_test.py
+++ b/tests/unit/cli_test.py
@@ -97,7 +97,9 @@ class CLITestCase(unittest.TestCase):
     @pytest.mark.xfail(IS_WINDOWS_PLATFORM, reason="requires dockerpty")
     @mock.patch('compose.cli.main.RunOperation', autospec=True)
     @mock.patch('compose.cli.main.PseudoTerminal', autospec=True)
+    @mock.patch.dict(os.environ)
     def test_run_interactive_passes_logs_false(self, mock_pseudo_terminal, mock_run_operation):
+        os.environ['COMPOSE_INTERACTIVE_NO_CLI'] = 'true'
         mock_client = mock.create_autospec(docker.APIClient)
         mock_client.api_version = DEFAULT_DOCKER_API_VERSION
         project = Project.from_config(