#c# #.net #sql-server #docker #connection
#c# #.net #sql-сервер #docker #подключение
Вопрос:
docker-compose.yml
version: "3.9"
services:
web:
build: .
ports:
- "8000:80"
container_name: web_application
depends_on:
- medicalmgr
medicalmgr:
image: "mcr.microsoft.com/mssql/server:2019-latest"
environment:
SA_PASSWORD: Pw@mm2021
ACCEPT_EULA: Y
ports:
- "1433:1433"
container_name: mmm_mmsql_2019
dockerfile
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app
COPY . .
RUN dotnet restore amp;amp;
dotnet publish -c Release -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "MedicalManager.dll"]
Startup.cs ‘s
public void CofigureServices(..){
....
var server = Configuration["DBServer"] ?? "medicalmgr";
var port = Configuration["DBPort"] ?? "1433";
var user = Configuration["DBUser"] ?? "SA";
var password = Configuration["DBPassword"] ?? "Pw@mm2021";
var database = Configuration["Database"] ?? "MedicalManager";
//var connectionStr = $"Server={server},{port};Initial Catalog={database};User ID=
//{user};Password={password}";
var connectionStr =
@"Server=medicalmgr;Database=MedicalManager;User=sa;Password=Pw@mm2021;";
services.AddDbContext<MedicalManagerDBContext>(
options => options.UseSqlServer(connectionStr)
);}
Ошибка:
Исключение при запуске приложения: Microsoft.Data.SqlClient.SQLException (0x80131904): при установлении соединения с SQL Server произошла ошибка, связанная с сетью или конкретным экземпляром. Сервер не найден или недоступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. (поставщик: поставщик TCP, ошибка: 40 — Не удалось открыть соединение с SQL Server)
Комментарии:
1.Ссылка: сеть в Compose По умолчанию Compose настраивает единую сеть для вашего приложения. Каждый контейнер для службы подключается к сети по умолчанию и доступен как для других контейнеров в этой сети, так и для обнаружения ими по имени хоста, идентичному имени контейнера. Вы пробовали использовать
Server=mmm_mmsql_2019;
в своей строке подключения?2. Имя контейнера не будет работать для имени сервера, даже если они по дизайну все контейнеры, находящиеся на одном хост-компьютере, используют одну и ту же сеть по умолчанию, если не указано иное. В любом случае, вот исходный код, github.com/biteus/mmm_development/pull/new/docker_mssql_con публичный доступ. Если бы вы могли посмотреть, можете ли вы подключиться. Кстати, если . Net app нет в docker, но есть DB, затем он подключается. Мне нужно, чтобы оба были в настройке Docker. Ваша помощь будет высоко оценена. Спасибо Дэну Гусману
3. Дэн Гусман. Я решил проблему с наличием asp.net приложение core 3.2 с базой данных mssql работает в контейнерном решении. Однако, только когда в настройке контейнера, после регистрации пользователя, логин не работает. Любое предложение. Некоторая проблема с перенаправлением.
Ответ №1:
Попробуйте это:
var connectionStr =
@"Data Source=localhost,1433;Initial Catalog=MedicalManager;User Id=sa;Password=Pw@mm2021";