mirror of
https://github.com/docker/compose.git
synced 2025-04-08 17:05:13 +02:00
Provide user override option on command line
Allows overriding a user on the command line from the one specified in the docker-compose.yml The added tests verify that a specified user overrides a default user in the docker-compose.yml file. Based on commit f2f01e207b491866349db7168e3d48082d7abdda by @chmouel Signed-off-by: Ian VanSchooten <ian@badgelabsllc.com>
This commit is contained in:
parent
9e9a66f0f8
commit
86b723e227
@ -275,6 +275,7 @@ class TopLevelCommand(Command):
|
|||||||
new container name.
|
new container name.
|
||||||
--entrypoint CMD Override the entrypoint of the image.
|
--entrypoint CMD Override the entrypoint of the image.
|
||||||
-e KEY=VAL Set an environment variable (can be used multiple times)
|
-e KEY=VAL Set an environment variable (can be used multiple times)
|
||||||
|
-u, --user="" Run as specified username or uid
|
||||||
--no-deps Don't start linked services.
|
--no-deps Don't start linked services.
|
||||||
--rm Remove container after run. Ignored in detached mode.
|
--rm Remove container after run. Ignored in detached mode.
|
||||||
--service-ports Run command with the service's ports enabled and mapped
|
--service-ports Run command with the service's ports enabled and mapped
|
||||||
@ -322,6 +323,10 @@ class TopLevelCommand(Command):
|
|||||||
|
|
||||||
if options['--entrypoint']:
|
if options['--entrypoint']:
|
||||||
container_options['entrypoint'] = options.get('--entrypoint')
|
container_options['entrypoint'] = options.get('--entrypoint')
|
||||||
|
|
||||||
|
if options['--user']:
|
||||||
|
container_options['user'] = options.get('--user')
|
||||||
|
|
||||||
container = service.create_container(
|
container = service.create_container(
|
||||||
one_off=True,
|
one_off=True,
|
||||||
insecure_registry=insecure_registry,
|
insecure_registry=insecure_registry,
|
||||||
|
4
tests/fixtures/user-composefile/docker-compose.yml
vendored
Normal file
4
tests/fixtures/user-composefile/docker-compose.yml
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
service:
|
||||||
|
image: busybox:latest
|
||||||
|
user: notauser
|
||||||
|
command: id
|
@ -231,6 +231,28 @@ class CLITestCase(DockerClientTestCase):
|
|||||||
u'/bin/echo helloworld'
|
u'/bin/echo helloworld'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@patch('dockerpty.start')
|
||||||
|
def test_run_service_with_user_overridden(self, _):
|
||||||
|
self.command.base_dir = 'tests/fixtures/user-composefile'
|
||||||
|
name = 'service'
|
||||||
|
user = 'sshd'
|
||||||
|
args = ['run', '--user={}'.format(user), name]
|
||||||
|
self.command.dispatch(args, None)
|
||||||
|
service = self.project.get_service(name)
|
||||||
|
container = service.containers(stopped=True, one_off=True)[0]
|
||||||
|
self.assertEqual(user, container.get('Config.User'))
|
||||||
|
|
||||||
|
@patch('dockerpty.start')
|
||||||
|
def test_run_service_with_user_overridden_short_form(self, _):
|
||||||
|
self.command.base_dir = 'tests/fixtures/user-composefile'
|
||||||
|
name = 'service'
|
||||||
|
user = 'sshd'
|
||||||
|
args = ['run', '-u', user, name]
|
||||||
|
self.command.dispatch(args, None)
|
||||||
|
service = self.project.get_service(name)
|
||||||
|
container = service.containers(stopped=True, one_off=True)[0]
|
||||||
|
self.assertEqual(user, container.get('Config.User'))
|
||||||
|
|
||||||
@patch('dockerpty.start')
|
@patch('dockerpty.start')
|
||||||
def test_run_service_with_environement_overridden(self, _):
|
def test_run_service_with_environement_overridden(self, _):
|
||||||
name = 'service'
|
name = 'service'
|
||||||
|
@ -120,6 +120,7 @@ class CLITestCase(unittest.TestCase):
|
|||||||
'SERVICE': 'service',
|
'SERVICE': 'service',
|
||||||
'COMMAND': None,
|
'COMMAND': None,
|
||||||
'-e': ['BAR=NEW', 'OTHER=THREE'],
|
'-e': ['BAR=NEW', 'OTHER=THREE'],
|
||||||
|
'--user': None,
|
||||||
'--no-deps': None,
|
'--no-deps': None,
|
||||||
'--allow-insecure-ssl': None,
|
'--allow-insecure-ssl': None,
|
||||||
'-d': True,
|
'-d': True,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user