可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I use this image: dperson/samba
The image is defining it's own entrypoint and I do not want to override it.
I need to pass arguments to the entrypoint, easy with docker only:
docker run ... dperson/samba arg1 arg2 arg3
But how to do it with docker_compose.yml ?
Right now I use as a workaround:
command: samba.sh arg1 arg2 arg3
But it is not satisfying as I force the redefinition of the entrypoint.
回答1:
The command
clause does work as @Karthik says above.
As a simple example, the following service will have a -inMemory
added to its ENTRYPOINT
when docker-compose up
is run.
version: '2' services: local-dynamo: build: local-dynamo image: spud/dynamo command: -inMemory
回答2:
Whatever is specified in the command
in docker-compose.yml should get appended to the entrypoint
defined in the Dockerfile, provided entrypoint
is defined in exec form in the Dockerfile.
If the EntryPoint is defined in shell form, then any CMD arguments will be ignored.
回答3:
You can use docker-compose run
instead of docker-compose up
and tack the arguments on the end. For example:
docker-compose run dperson/samba arg1 arg2 arg3
If you need to connect to other docker containers, use can use --service-ports
option:
docker-compose run --service-ports dperson/samba arg1 arg2 arg3
回答4:
I was facing same issue with jenkins ssh slave 'jenkinsci/ssh-slave', however my case was bit complicated because it was necessary to pass an argument which contained spaces. I've managed to do it like below (entrypoint in dockerfile is in exec form):
command: ["some argument with space which should be treated as one"]
Hope this helps. Thanks.