Add support for the --entrypoint option of docker run

Signed-off-by: Satoru Logic <satorulogic@gmail.com>
This commit is contained in:
satoru 2014-08-17 20:13:28 +08:00 committed by Ben Firshman
parent 267be12bb2
commit 62b9c64311
5 changed files with 27 additions and 1 deletions

View File

@ -262,6 +262,7 @@ class TopLevelCommand(Command):
allocates a TTY.
--rm Remove container after run. Ignored in detached mode.
--no-deps Don't start linked services.
--entrypoint Override the entrypoint of the image.
"""
service = project.get_service(options['SERVICE'])
@ -289,6 +290,10 @@ class TopLevelCommand(Command):
'tty': tty,
'stdin_open': not options['-d'],
}
if options['--entrypoint']:
container_options['entrypoint'] = options.get('--entrypoint')
container = service.create_container(one_off=True, **container_options)
if options['-d']:
service.start_container(container, ports=None, one_off=True)

View File

@ -89,7 +89,9 @@ class Container(object):
@property
def human_readable_command(self):
return ' '.join(self.get('Config.Cmd') or '')
entrypoint = self.get('Config.Entrypoint') or []
cmd = self.get('Config.Cmd') or []
return ' '.join(entrypoint + cmd)
@property
def environment(self):

View File

@ -0,0 +1,2 @@
FROM busybox:latest
ENTRYPOINT echo "From prebuilt entrypoint"

View File

@ -0,0 +1,2 @@
service:
build: tests/fixtures/dockerfile_with_entrypoint

View File

@ -191,6 +191,21 @@ class CLITestCase(DockerClientTestCase):
[u'/bin/true'],
)
@patch('dockerpty.start')
def test_run_service_with_entrypoint_overridden(self, _):
self.command.base_dir = 'tests/fixtures/dockerfile_with_entrypoint'
name = 'service'
self.command.dispatch(
['run', '--entrypoint', '/bin/echo', name, 'helloworld'],
None
)
service = self.project.get_service(name)
container = service.containers(stopped=True, one_off=True)[0]
self.assertEqual(
container.human_readable_command,
u'/bin/echo helloworld'
)
def test_rm(self):
service = self.project.get_service('simple')
service.create_container()