Je comprends que vous pouvez utiliser docker-compose avec la commande scale pour faire tourner plusieurs conteneurs. Cependant, ils auront tous la même configuration utilisée.
Est-il possible de lancer un conteneur sur le même hôte avec différentes configurations (différents .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 le qa.yml
conteneur sera en cours d'exécution, ce qui n'est pas ce que je veux.
- modifier -
Voici ce qui se passe lorsque j'essaie d'exécuter 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
Ma qa.yml
et dev.yml
ressemble à ca:
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 que vous devez faire, c'est changer le nom du projet. Par défaut, compose utilise un projet nommé en fonction du répertoire courant. Dans votre cas, vous voulez des environnements distincts, vous avez donc besoin de noms de projets différents.
Vous pouvez utiliser soit docker-compose -p <project_name>
ou définir COMPOSE_PROJECT_NAME
dans l'environnement.
Il y a aussi une discussion sur la façon de conserver le nom du projet: https://github.com/docker/compose/issues/745