Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server Docker sql映像:无法打开数据库;xyz";_Sql Server_Asp.net Mvc_Asp.net Core_Docker Compose_Dockerfile - Fatal编程技术网

Sql server Docker sql映像:无法打开数据库;xyz";

Sql server Docker sql映像:无法打开数据库;xyz";,sql-server,asp.net-mvc,asp.net-core,docker-compose,dockerfile,Sql Server,Asp.net Mvc,Asp.net Core,Docker Compose,Dockerfile,在尝试为我的应用程序设置sql docker容器化时,我遇到以下错误:- An unhandled exception occurred while processing the request. SqlException: Cannot open database "xyzDatabase" requested by the login. The login failed.Login failed for user 'sa'. WebMVC: Docker文件配置:- FROM mcr.mi

在尝试为我的应用程序设置sql docker容器化时,我遇到以下错误:-

An unhandled exception occurred while processing the request.
SqlException: Cannot open database "xyzDatabase" requested by the login. The login failed.Login failed for user 'sa'.
WebMVC: Docker文件配置:-

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
WORKDIR /src
COPY ["src/Web/WebUI/WebUI.csproj", "src/Web/WebUI/"]
COPY ["src/Core/Application/Application.csproj", "src/Core/Application/"]
COPY ["src/Infrastructure/Persistence/Persistence.csproj", "src/Infrastructure/Persistence/"]
RUN dotnet restore "src/Web/WebUI/WebUI.csproj"
COPY . .
WORKDIR "/src/src/Web/WebUI"
RUN dotnet build "WebUI.csproj" -c Release -o /app

FROM build AS publish
RUN dotnet publish "WebUI.csproj" -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "WebUI.dll"]
启动:-

 public static IServiceCollection AddSqlServerDatabase(this IServiceCollection services, IConfiguration configure)
        {
            services.AddEntityFrameworkSqlServer()
                   .AddDbContext<CatalogContext>(options =>
                   {
                       options.UseSqlServer(configure["ConnectionString"],
                           sqlServerOptionsAction: resilient =>
                           {
                               //resilient.MigrationsAssembly(typeof(Startup).GetTypeInfo().Assembly.GetName().Name);
                               resilient.EnableRetryOnFailure(maxRetryCount: 10, maxRetryDelay: TimeSpan.FromSeconds(30), errorNumbersToAdd: null);
                           });

                   }, ServiceLifetime.Scoped);

            services.AddEntityFrameworkSqlServer()
                    .AddDbContext<AppIdentityDbContext>(options =>
                    {
                        options.UseSqlServer(configure["ConnectionString"],
                        sqlServerOptionsAction: resilient =>
                        {
                            resilient.EnableRetryOnFailure(maxRetryCount: 10, maxRetryDelay: TimeSpan.FromSeconds(30), errorNumbersToAdd: null);
                        });
                    }, ServiceLifetime.Scoped);

            services.AddIdentity<ApplicationUser, IdentityRole>()
                    .AddEntityFrameworkStores<AppIdentityDbContext>()
                    .AddDefaultTokenProviders();

            return services;
        }
docker-compose.override.yml

version: '3.4'

services:

  sql.data:
   environment:
    - SA_PASSWORD=Pass@word
    - ACCEPT_EULA=Y
   ports:
    - "5433:1433"

  webui:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=http://0.0.0.0:80
      - ConnectionString=Server=sql.data;Database=eWebShopDatabase;User=sa;Password=Pass@word

    ports:
      - "5107:80"
    volumes:
      - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
我知道这是什么意思,但我真的不明白它想说什么:-

卷:${APPDATA}/Microsoft/UserSecrets:/root/.Microsoft/UserSecrets:ro

当我们从项目中添加“容器编排器支持”时,它会自动添加

我真的不明白在使用asp.net core app附加sql image容器之前是否需要创建用户名,还是默认情况下根据代码中实现的值创建用户名

appsettings.json文件:-

{
  "ConnectionString": "Server=tcp:127.0.0.1,5433;Database=xyzDatabase;User=sa;Password=Pass@word;"
}
docker生成并创建了容器映像文件,但该文件未运行或无法为数据库设定种子,因为登录失败可能是用户不在场或无法创建

有人可能遇到过这样的问题,并希望对这个问题有一些见解


谢谢

SA_密码
MSSQL_SA_密码
不同。请改为尝试此docker-compose.override.yml:

version: '3.4'

services:

  sql.data:
   environment:
    - MSSQL_SA_PASSWORD=Pass@word
    - ACCEPT_EULA=Y
   ports:
    - "5433:1433"

  webui:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=http://0.0.0.0:80
      - ConnectionString=Server=sql.data;Database=eWebShopDatabase;User=sa;Password=Pass@word

    ports:
      - "5107:80"
    volumes:
      - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
REF:

我假设服务器上存在数据库
xyz
?但是,实际上,您不应该将
sa
帐户用于
sa
职责之外的任何事情;当然,应用程序不应该使用它。您应该创建一个单独的登录名,仅具有所述应用程序所需的权限。
version: '3.4'

services:

  sql.data:
   environment:
    - MSSQL_SA_PASSWORD=Pass@word
    - ACCEPT_EULA=Y
   ports:
    - "5433:1433"

  webui:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=http://0.0.0.0:80
      - ConnectionString=Server=sql.data;Database=eWebShopDatabase;User=sa;Password=Pass@word

    ports:
      - "5107:80"
    volumes:
      - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro