Как установить связь между двумя Docker-контейнерами (mssql и .net core app) - PullRequest
0 голосов
/ 19 декабря 2018

У меня следующая проблема: у меня есть следующий файл docker-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

В appsettings.Docker.json у меня есть следующая строка подключения: "ConnectionStrings": {"DefaultConnection": "Сервер = my-special-db; База данных = ContosoUniversity3; Trusted_Connection = True; MultipleActiveResultSets = true "}

Я пытался также передать пароль, он не работает.Что я делаю не так?

1 Ответ

0 голосов
/ 19 декабря 2018

Вам необходимо добавить обе службы в общую сеть.

Пожалуйста, перечитайте этот документ: Docker Networks

В каждой из ваших услуг:

  networks:
   - sql-net

В конце составного файла:

networks:
   sql-net:
     driver: bridge

Тогда вы сможете подключиться к базе данных через имя контейнера, в вашем случае my-special-db

РЕДАКТИРОВАТЬ1 - Сетевые драйверы под windows

Ошибка, о которой сообщает OP, указывает на то, что она работает под управлением Windows 10. Здесь есть открытая ошибка здесь

Есть сообщения, которые используютtransparent драйвер может работать:

networks:
   sql-net:
     driver: transparent

EDIT 2 - опция ссылок

Вы также можете попробовать использовать устаревшую функцию Link .Добавьте это в web контейнер:

web:
  links:
    - my-special-db
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...