À l'aide de Docker-Composer de faire tourner plusieurs instances d'un conteneur avec des configurations différentes
Je comprends que, vous pouvez l'utilisateur docker-composer avec la commande échelle pour faire tourner plusieurs conteneurs. Cependant, ils ont tous la même configuration utilisé.
Est-il possible de lancer un conteneur sur le même hôte avec des configurations différentes (différentes .yml
fichiers) sur le même hôte?
En utilisant les commandes suivantes:
docker-compose -f dev.yml up -d
docker-compose -f qa.yml up -d
seulement la qa.yml
conteneur sera en cours d'exécution, ce qui n'est pas ce que je veux.
-- modifier --
Voici ce qui se passe quand j'ai essayer de lancer les deux commandes.
$ docker-compose -f compose/dev.yml up -d
compose_mydocker_1 is up-to-date
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
905912df6e48 compose_mydocker "/sbin/my_init" 2 days ago Up 2 days 0.0.0.0:1234->80/tcp compose_mydocker_1
$ docker-compose -f compose/qa.yml up -d
Recreating compose_mydocker_1...
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3fc912201224 compose_mydocker "/sbin/my_init" 5 seconds ago Up 5 seconds 0.0.0.0:1235->80/tcp compose_mydocker_1
Mon qa.yml
et dev.yml
ressembler à ceci:
mydocker:
build: ..
ports:
- "1234:80" #for dev.yml
#- "1235:80" for qa.yml
environment:
- ENVIRONMENT=dev #and vice-versa for qa
volumes:
- ../assets/images:/var/www/assets
- Ce qui se passe lorsque vous exécutez les deux commandes? Et à côté de la question: pourquoi vous avez besoin de deux configurations pour être exécutés en même temps sur le même hôte?
- pouvez-vous coller le journal de la
dev
etqa
docker-composition de démarrage. sidev
a été exécuté en premier, je l'ai attenduqa
mort à cause de ports en cours d'utilisation. - Je vais ajouter les renseignements demandés à la question! @Opale : je veux courir à la fois à l'environnement sur 1 serveur de test. "dev" est de l'environnement, les devs travaillent sur (peut être coupé) et de l'assurance qualité de l'environnement est QAs faire des tests sur après un build fait sortir de
dev
Vous devez vous connecter pour publier un commentaire.
Ce que vous devez faire est de modifier le nom du projet. Par défaut, composer utilise un projet nommé basé sur le répertoire courant. Dans votre cas, vous voulez environnements distincts, de sorte que vous besoin de différents noms de projet.
Vous pouvez utiliser
docker-compose -p <project_name>
ou un ensembleCOMPOSE_PROJECT_NAME
dans l'environnement.Il y a aussi des discussions sur la façon de fournir un moyen de conserver le nom du projet: https://github.com/docker/compose/issues/745
docker-compose -p <project name> stop
oudocker-compose -p <project name> down