J'ai un docker-compose.yml
qui contient plusieurs conteneurs. Trois d'entre eux sont destinés à mon application (client, serveur et base de données) et les autres sont destinés à divers outils de développement (par exemple psql, npm, manage.py, etc.). Quand je les fais, docker-compose up
tous commencent, mais je veux que les trois principaux commencent. En raison des liens que j'ai spécifiés, je ne peux démarrer que ces trois éléments, docker-compose up client
mais la sortie ne provient que de ce conteneur. Alors, y a-t-il un moyen de faire l'une des choses suivantes:
- Dites à docker-compose quels conteneurs doivent être démarrés par
docker-compose up
- Obtenir la sortie de tous les conteneurs liés à partir de
docker-compose up client
docker
docker-compose
Eau de vie
la source
la source
docker-compose up [options] [SERVICE...]
vous permet de démarrer le sous-ensemble de services que vous souhaitez lister.Réponses:
Vous pouvez démarrer des conteneurs en utilisant:
Cela exécutera les conteneurs en arrière-plan et la sortie sera disponible à partir de
et il sera composé de tous vos conteneurs démarrés
la source
Pour démarrer un service particulier défini dans votre fichier docker-compose. par exemple si vous avez un docker-compose.yml
étant donné un fichier de composition comme:
Parfois, vous souhaitez démarrer uniquement mySQL (parfois vous souhaitez simplement remplir une base de données) avant de démarrer toute votre suite.
la source
sudo
avantdocker-compose ...
? Ce n'est pas nécessaire, non?sudo docker-compose up db
place desudo docker-compose start db
start
suppose que le conteneur existe déjà et le démarre simplement,up
tirera des images si nécessaire, créera des conteneurs si nécessaire, puis démarrera le conteneur.Oh, juste avec ceci:
la source
Une bonne solution consiste à exécuter uniquement les services souhaités comme celui-ci:
et le fichier services.txt ressemble à ceci:
bien sûr, si la dépendance (depend_on), vous devez exécuter les services associés ensemble.
--build est facultatif, par exemple.
la source
Depuis la
docker-compose
v1.5, il est possible de transmettre plusieursdocker-compose.yml
fichiers avec l'-f
indicateur . Cela vous permet de diviser vos outils de développement en un autredocker-compose.yml
que vous n'incluez ensuite qu'à la demande:Pour une discussion approfondie à ce sujet, voir docker / compose # 1896 .
J'ai créé une pull request pour ajouter une fonctionnalité pour y parvenir avec beaucoup plus de commodité ( docker / compose # 7548 ), mais comme cela nécessite une modification de la spécification du fichier de composition, cela est maintenant discuté à compose-spec / compose-spec # 87 .
la source
Vous ne voulez généralement pas faire cela. Avec Docker Compose, vous définissez les services qui composent votre application.
npm
et nemanage.py
sont que des commandes de gestion. Vous n'avez pas besoin d'un conteneur pour eux. Si vous avez besoin de, disons créer vos tables de base de données avecmanage.py
, tout ce que vous avez à faire est:Considérez-le comme le dynos unique qu'utilise Heroku.
Si vous avez vraiment besoin de traiter ces commandes de gestion comme des conteneurs séparés (et d'utiliser également Docker Compose pour ceux-ci), vous pouvez créer un
.yml
fichier séparé et démarrer Docker Compose avec la commande suivante:la source