Ne virtualenv servent un but (la production) lors de l'utilisation de docker?
Pour le développement, nous utilisons virtualenv pour avoir un développement isolé quand il s'agit de dépendances. De cette question il semble que le déploiement d'applications Python dans un virtualenv est recommandée.
Maintenant, nous commençons à utiliser les support pour le déploiement. Ceci fournit un environnement isolé, donc je suis, remet en question l'utilisation de virtualenv à l'intérieur d'un conteneur docker. Dans le cas d'une demande unique, je ne pense pas que virtualenv a un but comme docker fournit déjà de l'isolement. Dans le cas où plusieurs applications sont déployées sur un seul conteneur docker, je ne pense virtualenv a un but que les applications peuvent avoir des dépendances conflictuelles.
Devrait virtualenv être utilisé lorsqu'une seule application est déployée dans un conteneur docker?
Devrait docker contenir plusieurs applications ou une seule demande par conteneur?
Si oui, devrait-virtualenv être utilisé lors du déploiement d'un récipient avec de multiples applications?
- Je pense que vous avez les bonnes questions. Quand un ensemble de python applications fonctionnent en même temps, vous aurez besoin virtualenv pour éviter la navigation à partir d'un conteneur à l'autre ... je'ld vous recommandons d'utiliser virtualenv par défaut, même si le conteneur est consacrée à travailler sur une seule application, parce que ... eh bien, vous ne savez jamais. Et la surcharge induite par virtualenv n'est pas très élevé 🙂
- Il n'y a pas de frais généraux de l'utilisation de docker. Il s'agit tout simplement d'une prison chroot sur linux.
Vous devez vous connecter pour publier un commentaire.
Virtualenv a été créé bien avant le panneau. Aujourd'hui, je me penche vers le panneau au lieu de virtualenv pour ces raisons:
Le principal inconvénient de Docker a été la mauvaise support de Windows. Qui a changé avec la version pour Windows 10.
Pour "le nombre d'apps par conteneur", la politique habituelle est de 1.
Oui. Vous devriez toujours utiliser virtualenv. Aussi, vous devez être la construction des roues à la place des oeufs maintenant. Enfin, vous devez vous assurer que vous gardez votre Panneau de l'image simple et efficace par la construction de vos roues dans un récipient avec le plein d'outils de compilation et de l'installation pas de construire des outils dans votre conteneur de l'application.
Vous devriez lire cet excellent article. https://glyph.twistedmatrix.com/2015/03/docker-deploy-double-dutch.html
La clé à emporter est
L'introduction de virtualenv est très facile, donc je dirais de commencer sans elle sur votre conteneur docker.
Si le besoin s'en fait sentir, alors peut-être que vous pouvez l'installer. L'exécution de "pip freeze > requirements.txt" vous donnera tous vos paquets python.
Cependant, je doute que vous aurez jamais besoin virtualenv à l'intérieur d'un conteneur docker comme la création d'un autre conteneur serait une solution préférable.
Je ne recommanderais pas avoir plus d'une application dans un conteneur unique. Lorsque vous arrivez à ce point, votre conteneur à en faire trop.
Si quelqu'un veut remplacer virtualenv complètement en utilisant le panneau qu'il peut.
Il suffit de créer différents Dockerfile pour l'environnement différent et utiliser le port et les volumes que vous avez besoin pour l'environnement.
Comme un exemple pour le développement, vous pouvez utiliser cette projet. Exécutez le panneau de composer et de commencer à coder.
Écrivez votre propre Dockerfiles pour les différents environnements comme d'essai, de production et de transfert en mettant votre journal et données en volume.
Ce lien est également utile https://vsupalov.com/docker-python-development/.
- Je utiliser à la fois parce que avec que vous pouvez utiliser plus facilement multi stade construit et il suffit de déplacer vos dépendances que vous avez construit en une seule étape en images/couches. Exemple peut être trouvé ici.