J'ai ceci dans mon Dockerfile:
...
CMD bash on-start.sh
Je peux l'exécuter en utilisant ceci et j'obtiens un shell interactif comme souhaité.
$ docker run -it imagename
$ _
Mais cela ne fonctionne pas en faisant cela:
$ docker-compose up
...
exited with code 0
Si je fais cela, cela fonctionne également, mais les services dépendants ne sont pas démarrés.
$ docker-compose run myservice
$ _
Mes versions:
$ docker --version
Docker version 1.10.0, build 590d5108
$ docker-compose --version
docker-compose version 1.6.0, build d99cad6
Vous souhaiterez probablement utiliser stdin_open: true dans votre fichier Compose.
C'est un comportement attendu. up
n'est pas interactif. Il peut démarrer plusieurs conteneurs, vous ne pouvez donc pas avoir un seul terminal qui a stdin ouvert pour plusieurs conteneurs.
run
devrait faire ce que vous voulez. Si vous utilisez depends_on
, les dépendances démarreront à partir de Compose 1.6.2 (le bogue a été corrigé dans compose 1.6.1), vous devrez donc également mettre à jour.
@dnephin
Daniel, je dois vous remercier pour votre note sur ce sujet. Cela fait deux jours que j'ai du mal à faire fonctionner un conteneur en mode interactif sur un serveur Node où je dois également saisir des données via le terminal situé en back-end. Le libellé de votre note m'a amené à examiner ma question sous un angle différent. Une longue lecture lente des détails de composition du docker (y compris la méthode d'exécution) a vraiment fonctionné pour moi. Merci beaucoup.
Je voulais obtenir un accès interactif au débogueur Python pdb s'exécutant dans un environnement docker-compose. TIL je peux faire ça avec docker attach myservice
Commentaire le plus utile
Vous souhaiterez probablement utiliser stdin_open: true dans votre fichier Compose.