web-dev-qa-db-fra.com

Docker compose le nom du conteneur défini pour les piles

Je déploie une petite pile sur un UCP

L'un des problèmes auxquels je suis confronté est le nommage du conteneur pour service1.

J'ai besoin d'un nom statique pour le conteneur, car il est utilisé par mycustomimageforservice2

L'option nom_conteneurest ignorée lors du déploiement d'une pile en mode swarm avec un fichier Compose (version 3).

Je dois utiliser version: 3 composer des fichiers.

version: "3"
services:

  service1:
    image: dockerhub/service1
    ports: 
      - "8080:8080"
    container_name: service1container
    networks:
      - mynet

  service2:
    image: myrepo/mycustomimageforservice2
    networks:
      - mynet
    restart: on-failure

networks:
  mynet:

Quelles sont mes options?

4
Igor L.

Vous ne pouvez pas forcer un conteneurName dans une composition telle qu'elle est conçue pour permettre des tâches telles que la mise à l'échelle d'un service (en mettant à jour le nombre de réplicas) et qui ne fonctionneraient pas avec des noms. Un service peut accéder à l'autre en utilisant servicename ( http: // serviceName: internalServicePort ) et docker fera le reste à votre place (résolution, par exemple, en une adresse de conteneur réelle, équilibrage de la charge entre les réplicas, etc.).

Cela fonctionne avec le type de réseau par défaut qui est superposé

2
herm

Vous pouvez faire face à votre problème de liaison des services dans le fichier docker-compose.yml. Quelque chose comme:

version: "3"
services:

  service1:
    image: dockerhub/service1
    ports: 
      - "8080:8080"
    networks:
      - mynet

  service2:
    image: myrepo/mycustomimageforservice2
    networks:
      - mynet
    restart: on-failure
    links:
      - service1

networks:
  mynet:

En utilisant des arguments de liens dans votre fichier docker-compose.yml, vous autoriserez un service à en accéder à un autre à l'aide du nom du conteneur. Dans ce cas, service2 établirait une connexion à service1 grâce au paramètre links. Je ne suis pas sûr de savoir pourquoi vous utilisez un réseau mais avec le paramètre links ne serait pas nécessaire.

0

Si vous devez utiliser la version 3 mais que vous ne travaillez pas avec swarms, vous pouvez ajouter --compatibility à vos commandes.

0
Joris Boschmans