mirror of https://github.com/docker/compose.git
Add -w or --workdir to compose run to override workdir from commandline
Signed-off-by: Simon van der Veldt <simon.vanderveldt@gmail.com>
This commit is contained in:
parent
94b1862579
commit
658803edf8
|
@ -527,6 +527,7 @@ class TopLevelCommand(object):
|
|||
to the host.
|
||||
-T Disable pseudo-tty allocation. By default `docker-compose run`
|
||||
allocates a TTY.
|
||||
-w, --workdir="" Working directory inside the container
|
||||
"""
|
||||
service = self.project.get_service(options['SERVICE'])
|
||||
detach = options['-d']
|
||||
|
@ -576,6 +577,9 @@ class TopLevelCommand(object):
|
|||
if options['--name']:
|
||||
container_options['name'] = options['--name']
|
||||
|
||||
if options['--workdir']:
|
||||
container_options['working_dir'] = options['--workdir']
|
||||
|
||||
run_one_off_container(container_options, self.project, service, options)
|
||||
|
||||
def scale(self, options):
|
||||
|
|
|
@ -26,6 +26,7 @@ Options:
|
|||
-p, --publish=[] Publish a container's port(s) to the host
|
||||
--service-ports Run command with the service's ports enabled and mapped to the host.
|
||||
-T Disable pseudo-tty allocation. By default `docker-compose run` allocates a TTY.
|
||||
-w, --workdir="" Working directory inside the container
|
||||
```
|
||||
|
||||
Runs a one-time command against a service. For example, the following command starts the `web` service and runs `bash` as its command.
|
||||
|
|
|
@ -1025,6 +1025,24 @@ class CLITestCase(DockerClientTestCase):
|
|||
container, = service.containers(stopped=True, one_off=True)
|
||||
self.assertEqual(container.name, name)
|
||||
|
||||
def test_run_service_with_workdir_overridden(self):
|
||||
self.base_dir = 'tests/fixtures/run-workdir'
|
||||
name = 'service'
|
||||
workdir = '/var'
|
||||
self.dispatch(['run', '--workdir={workdir}'.format(workdir=workdir), name])
|
||||
service = self.project.get_service(name)
|
||||
container = service.containers(stopped=True, one_off=True)[0]
|
||||
self.assertEqual(workdir, container.get('Config.WorkingDir'))
|
||||
|
||||
def test_run_service_with_workdir_overridden_short_form(self):
|
||||
self.base_dir = 'tests/fixtures/run-workdir'
|
||||
name = 'service'
|
||||
workdir = '/var'
|
||||
self.dispatch(['run', '-w', workdir, name])
|
||||
service = self.project.get_service(name)
|
||||
container = service.containers(stopped=True, one_off=True)[0]
|
||||
self.assertEqual(workdir, container.get('Config.WorkingDir'))
|
||||
|
||||
@v2_only()
|
||||
def test_run_interactive_connects_to_network(self):
|
||||
self.base_dir = 'tests/fixtures/networks'
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
service:
|
||||
image: busybox:latest
|
||||
working_dir: /etc
|
||||
command: /bin/true
|
|
@ -102,6 +102,7 @@ class CLITestCase(unittest.TestCase):
|
|||
'--publish': [],
|
||||
'--rm': None,
|
||||
'--name': None,
|
||||
'--workdir': None,
|
||||
})
|
||||
|
||||
_, _, call_kwargs = mock_run_operation.mock_calls[0]
|
||||
|
@ -135,6 +136,7 @@ class CLITestCase(unittest.TestCase):
|
|||
'--publish': [],
|
||||
'--rm': None,
|
||||
'--name': None,
|
||||
'--workdir': None,
|
||||
})
|
||||
|
||||
self.assertEquals(
|
||||
|
@ -156,6 +158,7 @@ class CLITestCase(unittest.TestCase):
|
|||
'--publish': [],
|
||||
'--rm': True,
|
||||
'--name': None,
|
||||
'--workdir': None,
|
||||
})
|
||||
|
||||
self.assertFalse(
|
||||
|
|
Loading…
Reference in New Issue