Я занимаюсь разработкой основного веб-API .NET с базой данных MSSQL Server.Я попытался заключить это в контейнер Docker и использовать Docker Compose для ускорения этого сервиса.Но мой API не может подключиться к базе данных.
Произошла следующая ошибка:
Исключение при запуске приложения: System.Data.SqlClient.SqlException (0x80131904): связанный с сетью или экземплярошибка при установлении соединения с SQL Server.Сервер не найден или не был доступен.Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений.(поставщик: поставщик TCP, ошибка: 40 - не удалось открыть соединение с SQL Server)
Код в моем запуске:
services.AddDbContext<ProductServiceDbContext>(options =>
options.UseSqlServer("server=sqlserver;port=1433;user id=sa;password=docker123!;database=ProductService;"));
Dockerfile:
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /app
COPY *.csproj ./
RUN dotnet restore dockerapi.csproj
COPY . ./
RUN dotnet publish dockerapi.csproj -c Release -o out
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS runtime
WORKDIR /app
COPY --from=build /app/out .
ENTRYPOINT ["dotnet", "dockerapi.dll"]`
Docker-compose:
version: '3.4'
services:
productservice:
image: productservice/api
container_name: productservice_api
build:
context: ./ProductService/ProductService
depends_on:
- sqlserver
ports:
- "5000:80"
sqlserver:
image: microsoft/mssql-server-linux:latest
container_name: sqlserver
ports:
- "1433"
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=docker123!
Я пробовал несколько вещей:
- Добавление ссылок в файл docker-compose (sqlserver в productservice)
- Добавление сетей в файл docker-compose
- Изменена строка подключения на "server = sqlserver; идентификатор пользователя = sa; пароль = docker123!; Database = ProductService;"или "сервер = sqlserver, 1433; идентификатор пользователя = sa; пароль = docker123!; база данных = ProductService;"