Какое имя хоста базы данных я должен использовать для приложений ASP.NET с docker-compose? - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь настроить проект ASP.NET (на основе этого руководства) с использованием Visual Studio для Mac, и мне нужно запустить контейнеры Docker для веб-приложения и базы данных SQL Server.

Используя следующее docker-compose.yaml, оба контейнера успешно работают, и я могу загрузить целевую страницу веб-приложения на http://localhost:5000:

version: '3.4'

services:
  razorpagesmovie:
    image: ${DOCKER_REGISTRY-}razorpagesmovie
    build:
      context: .
      dockerfile: RazorPagesMovie/Dockerfile
    ports:
      - "5000:5000"
    depends_on:
      - mssql

  mssql:
    image: microsoft/mssql-server-linux
    ports:
      - "1433:1433"
    environment:
      SA_PASSWORD: "L0ngpassword"
      ACCEPT_EULA: "Y"

Строка подключения в appsettings.json равна

Server=<host>,1433;Database=Movies;User=sa;Password=L0ngpassword;

Однако я не знаю, какое значение использовать для имени хоста:

  1. Если я жестко закодирую IP-адрес моей машины, то и веб-приложение И dotnet ef database ... вызовы, выполняемые в моей локальной оболочке, могут подключаться к базе данных - пока мой IP-адрес не изменится
  2. Если я использую localhost, то только базы данных dotnet ef database ..., выполненные в моей локальной оболочке, могут подключаться к базе данных
  3. Если я использую mssql, то только база данных веб-приложения может подключиться к базе данных

Есть ли более надежный подход, чем жесткое кодирование моего IP?

1 Ответ

0 голосов
/ 27 июня 2019

Предполагается, что в вашем файле appsettings.json есть ключ json ConnectionString.

Вы можете добавить переменную окружения для строки подключения в этот контейнер. Используйте DB_IP или введите имя службы mssql контейнера БД.

version: '3.4'

services:
  razorpagesmovie:
    image: ${DOCKER_REGISTRY-}razorpagesmovie
    build:
      context: .
      dockerfile: RazorPagesMovie/Dockerfile
    ports:
      - "5000:5000"
    environment:
      - ConnectionString=${DB_IP:-Server=mssql;Database=Movies;User=sa;Password=L0ngpassword} 
    depends_on:
      - mssql

  mssql:
    image: microsoft/mssql-server-linux
    ports:
      - "1433:1433"
    environment:
      SA_PASSWORD: "L0ngpassword"
      ACCEPT_EULA: "Y"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...