web-dev-qa-db-fra.com

docker-composer pour seulement certains conteneurs

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 le reste à divers outils de développement (par exemple, psql, npm, manage.py, etc.). Quand je fais docker-compose up tous sont démarrés, mais je veux seulement 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 avec 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:

  1. Indiquez à docker-compose quels conteneurs doivent être lancés par docker-compose up
  2. Récupère la sortie de tous les conteneurs liés à partir de docker-compose up client
90
aquavitae

Vous pouvez démarrer des conteneurs en utilisant:

$ docker-compose up -d client

Cela exécutera les conteneurs en arrière-plan et la sortie sera disponible à partir de

$ docker-compose logs

et il se composera de tous vos conteneurs commencés

162
wsl

Pour démarrer un service particulier défini dans votre fichier docker-compose. par exemple si vous avez un docker-compose.yml

Sudo docker-compose start db  

étant donné un fichier de composition comme:

version: '3.3'

services:
   db:
     image: mysql:5.7
     ports:
       - "3306:3306"
     volumes:
       - ./db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: yourPassword
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: yourPassword

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "80:80"
     volumes:
       - ./l3html:/var/www/html
     restart: always
     environment:
       WORDPRESS_DB_Host: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: yourPassword
volumes:
    db_data:
    l3html:

Parfois, vous ne voulez démarrer que MySQL (parfois, vous ne souhaitez que remplir une base de données) avant de démarrer votre suite.

27
Hugo R

Vous ne voulez généralement pas faire cela. Avec Docker Compose, vous définissez services que composez votre application. npm et manage.py ne sont que des commandes de gestion. Vous n'avez pas besoin d'un conteneur pour eux. Si vous devez, par exemple, créer vos tables de base de données avec manage.py, il vous suffit de:

docker-compose run client python manage.py create_db

Pensez-y comme aux dynos uniques utilisés par Heroku.

Si vous avez vraiment besoin de traiter ces commandes de gestion comme des conteneurs distincts (et d'utiliser également Docker Compose pour celles-ci), vous pouvez créer un fichier .yml séparé et lancer Docker Compose à l'aide de la commande suivante:

docker-compose up -f my_custom_docker_compose.yml
0
linkyndy