From 62b9c64311adf10ad61c6fcefeae8b7678f72284 Mon Sep 17 00:00:00 2001 From: satoru Date: Sun, 17 Aug 2014 20:13:28 +0800 Subject: [PATCH 1/2] Add support for the --entrypoint option of docker run Signed-off-by: Satoru Logic --- fig/cli/main.py | 5 +++++ fig/container.py | 4 +++- .../dockerfile_with_entrypoint/Dockerfile | 2 ++ tests/fixtures/dockerfile_with_entrypoint/fig.yml | 2 ++ tests/integration/cli_test.py | 15 +++++++++++++++ 5 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 tests/fixtures/dockerfile_with_entrypoint/Dockerfile create mode 100644 tests/fixtures/dockerfile_with_entrypoint/fig.yml diff --git a/fig/cli/main.py b/fig/cli/main.py index 36ae6252416..fe069146e0e 100644 --- a/fig/cli/main.py +++ b/fig/cli/main.py @@ -262,6 +262,7 @@ def run(self, project, options): 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 @@ def run(self, project, options): '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) diff --git a/fig/container.py b/fig/container.py index a4042c868b9..7e06bde3550 100644 --- a/fig/container.py +++ b/fig/container.py @@ -89,7 +89,9 @@ def human_readable_state(self): @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): diff --git a/tests/fixtures/dockerfile_with_entrypoint/Dockerfile b/tests/fixtures/dockerfile_with_entrypoint/Dockerfile new file mode 100644 index 00000000000..7d28d29332c --- /dev/null +++ b/tests/fixtures/dockerfile_with_entrypoint/Dockerfile @@ -0,0 +1,2 @@ +FROM busybox:latest +ENTRYPOINT echo "From prebuilt entrypoint" diff --git a/tests/fixtures/dockerfile_with_entrypoint/fig.yml b/tests/fixtures/dockerfile_with_entrypoint/fig.yml new file mode 100644 index 00000000000..a10381187ab --- /dev/null +++ b/tests/fixtures/dockerfile_with_entrypoint/fig.yml @@ -0,0 +1,2 @@ +service: + build: tests/fixtures/dockerfile_with_entrypoint diff --git a/tests/integration/cli_test.py b/tests/integration/cli_test.py index 10afbe7a6d2..728676c103d 100644 --- a/tests/integration/cli_test.py +++ b/tests/integration/cli_test.py @@ -191,6 +191,21 @@ def test_run_without_command(self, __): [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() From 0dc19cb88591d752ce3c421f3ada6463555f6b16 Mon Sep 17 00:00:00 2001 From: Ben Firshman Date: Wed, 1 Oct 2014 09:14:01 -0700 Subject: [PATCH 2/2] Order "fig run" options alphabetically Signed-off-by: Ben Firshman --- fig/cli/main.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fig/cli/main.py b/fig/cli/main.py index fe069146e0e..8eb912d4054 100644 --- a/fig/cli/main.py +++ b/fig/cli/main.py @@ -258,11 +258,11 @@ def run(self, project, options): Options: -d Detached mode: Run container in the background, print new container name. + --entrypoint Override the entrypoint of the image. + --no-deps Don't start linked services. + --rm Remove container after run. Ignored in detached mode. -T Disable pseudo-tty allocation. By default `fig run` 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'])