web-dev-qa-db-fra.com

Utilisation de Docker-Compose pour faire tourner plusieurs instances d'un conteneur avec différentes configurations

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
23
Nepoxx

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

42
dnephin