web-dev-qa-db-fra.com

Comment passer des arguments à entrypoint dans docker-compose.yml

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.

84
user1707414

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
77
Randy Larson

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.

33
Karthik

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
16
afaulconbridge

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.

6
Alina Grosu

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
0
kenorb