web-dev-qa-db-fra.com

Docker-compose et pdb

Je vois que je ne suis pas le premier à poser la question mais il n'y avait pas de réponse claire à ceci: 

Comment utiliser pdb avec docker-composer dans le développement Python? 

Lorsque vous interrogez Google sur Django docker, vous obtenez des exemples et des didacticiels géniaux pour docker-composer et mon environnement fonctionne. Je peux exécuter docker-compose up et mon environnement de développement est soigné mais la PDB ne fonctionne pas (ce qui est très triste). . 

Je peux régler avec docker-compose run my-awesome-app python app.py 0.0.0.0:8000 mais je peux accéder à mon application via http://127.0.0.1:8000 à partir de l'hôte (je peux avec docker-compose up) et il semble que chaque fois que j'utilise run, de nouveaux conteneurs sont créés comme : dir_app_13 et dir_db_4 que je ne souhaite pas du tout. 

Les gens de bonne volonté s'il vous plaît, aidez-moi.

PS
J'utilise pdb ++ pour cet exemple et un fichier de base docker-compose.yml à partir de cet exemple de Django . Aussi j'ai expérimenté mais rien ne semble m'aider. Et j'utilise docker-composer 1.3.0rc3 car il est supporté par Dockerfile.

39
McAbra

Essayez d’exécuter votre conteneur Web avec l’option --service-ports: docker-compose run --service-ports web

31
Jamey

Utilisez les étapes suivantes pour attacher pdb à n’importe quel script python.

Étape 1. Ajoutez ce qui suit dans votre fichier yml

stdin_open: true
tty: true

Cela activera le mode interactif et attachera stdin. Ceci est équivalent pour le mode -it.

Étape 2.

docker attach <generated_containerid>

Vous allez maintenant obtenir le shell pdb

72

Jusqu'à ce que je sache, la commande docker-compose up ne fournit pas de shell interactif, mais elle lance l'impression de STDOUT sur le shell en lecture seule par défaut. 

Ou, si vous avez spécifié et répertoire des journaux mappés, la commande docker-compose up n’imprimera rien sur le shell attaché, mais elle enverra une sortie vers vos journaux mappés. Donc, vous devez attacher le conteneur séparément une fois qu'il est en cours d'exécution.

lorsque vous faites docker-compose up, passez en mode détaché via -d et connectez-vous au conteneur via

docker exec -it your_container_name bash

0
Bhuro