Como se comunicar entre dois contentores Docker (MSSQL e núcleo .net app)

votos
0

Eu tenho o seguinte problema: Eu tenho o seguinte arquivo estivador-compose

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

No appsettings.Docker.json Eu tenho a seguinte seqüência de conexão: ConnectionStrings: { DefaultConnection: Servidor = my-especial-db; banco de dados = ContosoUniversity3; Trusted_Connection = True; MultipleActiveResultSets = true}

Eu tentei passar também a senha, ele não funciona. O que eu estou fazendo errado?

Publicado 19/12/2018 em 14:08
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Você precisa adicionar os serviços de uma rede comum.

Por favor, Rede neste documento: Docker Networks

Em cada um dos seus serviços:

  networks:
   - sql-net

No final do arquivo de composição:

networks:
   sql-net:
     driver: bridge

Então você vai ser capaz de se conectar ao banco de dados por meio de seu nome do contêiner, no seu caso my-special-db

EDIT 1 - drivers de rede no Windows

O erro relatado pelo OP sugere que ele está executando o Windows 10. Há um bug aberto para ele aqui

Há relatos de que o uso de transparentmotorista pode funcionar:

networks:
   sql-net:
     driver: transparent

EDIT 2 - Ligações Opção

Você também pode tentar usar o legado recurso Link . Adicione isso ao webrecipiente:

web:
  links:
    - my-special-db
Respondeu 19/12/2018 em 14:16
fonte usuário

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