2016-10-30 2 views
1

J'utilise actuellement un docker-composer pour installer une série de microservices que je veux lier à un service d'enregistrement d'erreurs commun (créé en dehors du composer).Comment utiliser external_links pour connecter docker-composer au service commun?

Je crée le service errorHandling en dehors du composant.

docker run -d --name errorHandler 

Ensuite, je cours Compose (résumé):

version: '2' 
services: 
    my-service: 
    build: ../my-service 
    external_links: 
     - errorHandler 

J'utilise l'alias de nom d'hôte ('ErrorHandler') dans mon application, mais ne peux pas sembler les obtenir connecté. Comment puis-je vérifier si le service est même découvert dans le réseau de composition?

Répondre

4

Plutôt que des liens, utilisez un réseau de docker partagé. Placez le conteneur "errorHandler" sur un réseau dans Docker, en utilisant quelque chose comme docker network create errorNet et docker network connect errorNet errorHandler. Définissez ensuite ce réseau dans votre fichier pour composer « mon service » avec:

version: '2' 
networks: 
    errorNet: 
    external: true 

services: 
    my-service: 
    build: ../my-service 
    networks: 
    - errorNet 

Il utilise le DNS interne de docker pour relier les conteneurs ensemble.

+0

ah merveilleux tour. en remarque, sous my-service je devais spécifier '- default'. très apprécié pour l'aide - passé trop longtemps sur ce sujet hier. juste curieux, les liens externes sont-ils généralement désapprouvés? Je ne peux pas penser à une raison pour laquelle je ne serais pas toujours favorable à l'utilisation de réseaux – Tkwon123

+1

Linking conteneurs est devenu la solution obsolète après docker introduit des réseaux. Je n'ai jamais eu besoin de l'utiliser. – BMitch