J'utilise cette image: dperson/samba
L'image définit son propre point d'entrée et je ne veux pas le remplacer.
Je dois passer des arguments au point d'entrée, facile avec docker uniquement:
docker run ... dperson/samba arg1 arg2 arg3
Mais comment faire avec docker_compose.yml?
À l'heure actuelle, j'utilise comme solution de contournement:
command: samba.sh arg1 arg2 arg3
Mais ce n'est pas satisfaisant car je force la redéfinition du point d'entrée.
La clause command
fonctionne comme @Karthik l’indique ci-dessus.
Par exemple, le service suivant aura un -inMemory
ajouté à sa ENTRYPOINT
lorsque docker-compose up
sera exécuté.
version: '2'
services:
local-dynamo:
build: local-dynamo
image: spud/dynamo
command: -inMemory
Tout ce qui est spécifié dans command
dans docker-compose.yml doit être ajouté à la entrypoint
définie dans le fichier docker, à condition que entrypoint
soit défini sous la forme exec dans le fichier docker.
Si EntryPoint est défini sous forme shell, tous les arguments CMD seront ignorés.
Vous pouvez utiliser docker-compose run
au lieu de docker-compose up
et ajouter les arguments à la fin. Par exemple:
docker-compose run dperson/samba arg1 arg2 arg3
Si vous devez vous connecter à d'autres conteneurs de menu fixe, use peut utiliser l'option --service-ports
:
docker-compose run --service-ports dperson/samba arg1 arg2 arg3
Jenkins ssh slave ' jenkinsci/ssh-slave ' me posait le même problème, mais mon cas était un peu compliqué car il était nécessaire de passer un argument contenant des espaces. J'ai réussi à le faire comme ci-dessous (le point d'entrée dans dockerfile est au format exec):
command: ["some argument with space which should be treated as one"]
J'espère que ça aide ... Merci.
Pour remplacer le point d’entrée par défaut, utilisez entrypoint
option .
Voici l'exemple de remplacement de bash
par sh
dans ubuntu
image:
version: '3'
services:
sh:
entrypoint: /bin/sh
command: -c "ps $$(echo $$$$)"
image: ubuntu
tty: true
bash:
entrypoint: /bin/bash
command: -c "ps $$(echo $$$$)"
image: ubuntu
tty: true
Voici la sortie:
$ docker-compose up
Starting test_sh_1 ... done
Starting 020211508a29_test_bash_1 ... done
Attaching to test_sh_1, 020211508a29_test_bash_1
sh_1 | PID TTY STAT TIME COMMAND
sh_1 | 1 pts/0 Ss+ 0:00 /bin/sh -c ps $(echo $$)
020211508a29_test_bash_1 | PID TTY STAT TIME COMMAND
020211508a29_test_bash_1 | 1 pts/0 Rs+ 0:00 ps 1