Bonjour, je me demande s'il est possible d'exécuter deux scripts en même temps sur le début du conteneur Docker. Le premier script doit exécuter une application client et la deuxième application de serveur d'exécution comme arrière-plan. p>
3 Réponses :
Vous pouvez Utiliser (où cmd code> dans votre
et Utilisez la commande Dockerfile code>
et code> pour exécuter deux commandes en parallèle
: server_command code> est la commande utilisée pour démarrer Le serveur et
client_command code> est la commande utilisée pour démarrer le client) p> p>
Notez que le conteneur quittera lorsque Client_command CODE> complète, Docker ne remarquera pas si
Server_Command CODE> sort de manière inattendue et des commandes telles que
Docker STOP code> n'enverra pas un signal à l'un ou l'autre processus.
La position officielle de Docker à ce sujet a toujours été qu'il est préférable de disposer d'un seul service unique dans un conteneur. Cela dit, ils maintiennent également une documentation très robuste des solutions possibles pour obtenir plusieurs services dans un seul conteneur. P>
https://docs.docker.com/config/containers/multi- service_container / p>
Un résumé rapide est essentiellement que lorsque vous avez plusieurs services, vous devez avoir un certain type de processus "init" pour agir en tant que parent pour tous les services dans le conteneur. P>
Il y a deux façons de faire ceci: p>
Les deux sont problématiques. Le premier parce que Bash n'est pas un système init et vous pouvez vous retrouver avec toutes sortes de maux de tête lorsqu'il n'agit pas comme un. Le second parce qu'un système init est une chose assez intense de mettre dans un conteneur Docker. P>
Après avoir dit tout cela, La meilleure solution consiste à diviser vos services en deux conteneurs. strong> p>
Comme mentionné avoir plusieurs processus n'est pas une pratique suggérée. P>
Néanmoins, dans certains scénarios est nécessaire pour avoir plusieurs processus. Dans ces cas, l'approche habituelle consiste à utiliser un gestionnaire de processus comme superviseur . p>
J'ai réalisé cela en utilisant le gestionnaire de processus (dans mon cas cirque , mais il existe d'autres solutions similaires) . Cela a du sens pour les processus à long terme (semble que votre cas). En outre, il ajoute que si vous ne gérez pas une erreur d'erreur dans votre application et que cela s'arrête en raison de cette exception, le cirque le redémarrera. Comme un inconvénient (pour certains cas), c'est une application Python, il a donc besoin de Python Runtime et avait besoin de bibliothèques à installer dans votre conteneur Docker.
Pouvez-vous simplement utiliser 2 conteneurs?
Ok kami mais une seule application est python. Ben je dois utiliser un conteneur
@Progshed, ce n'est pas un problème qu'une seule application est python. Vous pouvez exécuter n'importe quel script / application avec cette approche. En fait, j'ai exécuté des applications Java avec un tel gestionnaire de processus dans Docker Contener.