Comment communiquer entre deux récipients de docker (mssql et .net app noyau)

voix
0

J'ai la question suivante: Je le fichier docker-Compose suivant

version: 3
services:
    web:
        build: .
        ports:
            - 8000:80
        links:
            - my-special-db
        networks:
            - demo-net
    my-special-db:
        image: microsoft/mssql-server-windows-developer
        ports:
            - 1433:1433
        environment:
            - ACCEPT_EULA=Y
            - sa_password=demo
        networks:
            - demo-net
networks:
        demo-net:
          driver: nat

Dans le appsettings.Docker.json j'ai la chaîne de connexion suivante: ConnectionStrings: { DefaultConnection: Serveur = my-db spécial; Base de données = ContosoUniversity3; Trusted_Connection = True; MultipleActiveResultSets = true}

J'ai essayé aussi passer le mot de passe, il ne fonctionne pas. Ce que je fais mal?

Créé 19/12/2018 à 14:08
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
1

Vous devez ajouter les deux services dans un réseau commun.

S'il vous plaît rede ce document: Docker Networks

Dans chacun de vos services:

  networks:
   - sql-net

A la fin du fichier de composition:

networks:
   sql-net:
     driver: bridge

Ensuite, vous serez en mesure de se connecter à la base de données par son nom de conteneur, dans votre cas my-special-db

EDIT 1 - Pilotes réseau sous Windows

L'erreur signalée par l'OP suggère qu'il est en cours d' exécution de Windows 10. Il y a un bug ouvert pour elle ici

Il y a des rapports que l' utilisation de transparentpilote pourrait fonctionner:

networks:
   sql-net:
     driver: transparent

EDIT 2 - Liens Option

Vous pouvez également essayer d' utiliser l'héritage fonction de lien . Ajouter ceci au webconteneur:

web:
  links:
    - my-special-db
Créé 19/12/2018 à 14:16
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more