J'ai eu un peu de temps pour déboguer cela plus aujourd'hui -> parce que j'utilisais une image de docker 'officielle', j'avais peu voire aucune visibilité sur ce qui se passait. Pour résoudre cela, j'ai étendu l'image officielle et invoqué mon propre point d'entrée. Le Dockerfile :
FROM officialImage:version
ENV envOne=value1 \
envTwo=value2
COPY wrapper-entrypoint.sh /
ENTRYPOINT ["/wrapper-entrypoint.sh"]
Ensuite, j'ai fait un 'set -x' dans le script wrapper-entrypoint.sh
et invoqué l'original :
#!/bin/bash
set -x
echo "Être pointilleux : tous les arguments passés : $@"
bash -x ./original-entrypoint.sh "$@"
À partir de cela, j'ai découvert :
- Le redémarrage appelle bien le
ENTRYPOINT
original avec les arguments originaux. L'image officielle que j'ai utilisée a détecté qu'elle était déjà initialisée et a donc agi différemment. C'est pourquoi j'étais confus sur la sémantique. Utiliser -x
m'a permis de voir ce qui se passait réellement.
- Je ne sais toujours pas pourquoi
docker kill
arrête le redémarrage, mais c'est ce que je vois - du moins sur Docker Data Center.
- Je ne crois pas que les volumes de données partagés affectent cela de quelque manière, SAUF pour les actions qu'un script
ENTRYPOINT
donné pourrait prendre en fonction de sa condition au moment du redémarrage.