L'ENTRYPOINT sera toujours exécuté (sauf si tu l'overwrite avec --entrypoint), et CMD devient donc un paramètre de l'ENTRYPOINT.

Donc si tu lances docker run -ti onyx sh, ton conteneur lance en réalité ./start.sh sh, sh n'est qu'un paramètre. Après dans le start.sh, $# permets de compter le nombre de paramètre, si y'a pas de paramètre, il exécute python3 manage.py runserver -h 0.0.0.0 -p 5080 -d -r (ce qui ne devrait jamais arrivé, puisque CMD est écris dans le Dockerfile), si c'est pas vide, il exécute $@, qui est tout les paramètres passé à start.sh, dans notre exemple sh.

Comme quand j'ai lancé docker run -ti onyx ls -l, le conteneur lance start.sh ls -l, donc il exécute tout le start.sh, puis après ls -l, $@ == ls -l donc $# == 2.

L'avantage étant aussi que le CMD sera exécuté avec les droits que tu as indiqué dans le start.sh.

Je sais pas si j'ai été très clair ^^.

Je crois avoir compris
Donc en gros, dès que je fais un docker run onyx sh (avec mon ancien Dockerfile sans entrypoint) cela ne lançais pas ./start.sh car c'était remplacé par le sh ?
Mais avec ce que tu as fais aussi ? Ou il lancera quand même l'assistant en plus de la commande sh ?

Dis, tu as appris où à utiliser Docker (sur la docs j'imagine ^^ ) ?

Avec la modification, il lancera toujours le start.sh, sauf si tu lances ton conteneur avec l'option --entrypoint, par exemple docker run -ti --entrypoint sh onyx.

Effectivement j'ai principalement appris Docker avec la docs officiel, mais ce qui m'a vraiment initié, c'est une vidéo faite par grafikart (Très bien expliqué, même si avec le temps, je suis pas vraiment d'accord avec sa définition de docker ^^). Puis après j'ai regarder beaucoup de conférence sur docker (devoxxx, chaine docker, quoi de neuf docker Etc ....). Pour les images, je pense qu'il y'a pas mieux que de regarder comment fonctionne celle des autres, on en vois les erreurs, et les choses pas mal, comme par exemple, mon utilisation de s6 et cette façon de lancer les scripts me viennent de l'image officiel de gogs.

D'accord... Et derrière, tu avais des connaissances en administration Linux j'imagine ?

Oui biensur, mais on s'éloigne du sujet d'origine ^^

ça doit aider alors ^^ vais devoir bien me former la dessus 😃

Le problème est résolu, merci à tous de m'avoir aidé 🙂

Répondre…