Search code examples
dockerentity-frameworkasp.net-corecentos

while build net core 5.0 in docker show error "An error occurred while processing your request" (centos 8/VScode / Docker/EF Core)?


When I create an ASP.NET Core Web Application in Visual Studio Code, then Add Docker support to the project , a Dockerfile is created which looks like this:
#Dockerfile #

FROM mcr.microsoft.com/dotnet/aspnet:5.0-focal AS base
WORKDIR /app
EXPOSE 8000

ENV BloggingDatabase="Server=xxx.xxx.xxx.xxx;Database=testdb;Trusted_Connection=True;User Id=myid;Password=myPassword;Integrated Security=false;"
ENV ASPNETCORE_URLS=http://+:8000

RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser

FROM mcr.microsoft.com/dotnet/sdk:5.0-focal AS build
WORKDIR /src
COPY ["MVCVue.csproj", "./"]
RUN dotnet restore "MVCVue.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "MVCVue.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "MVCVue.csproj" -c Release -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MVCVue.dll"]

I try to run it from Visual Studio Code can find the local database and connect to it. change database setting the environment variable run docker container, But when I run the app in the docker container cannot connect to the database the running container it returns this error :
enter image description here


my Startup code
#Startup.cs#

namespace MVCVue
{

    public class Startup

    {

        public Startup(IConfiguration configuration)

        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        public void ConfigureServices(IServiceCollection services)

        {
            services.AddControllersWithViews();
            services.AddDbContext<cpteContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("BloggingDatabase")));

services.AddAntiforgery(opiton => {
    opiton.FormFieldName = "MyAntiForgeryField";
    opiton.HeaderName = "ANTI-TOKEN-HEADERNAME";

});

        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)

        {

            if (env.IsDevelopment())

            {

                app.UseDeveloperExceptionPage();

            }

            else

            {

                app.UseExceptionHandler("/Home/Error");

                app.UseHsts();

            }

            app.UseHttpsRedirection();

            app.UseStaticFiles();         
            app.UseRouting();
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>

            {

                endpoints.MapControllerRoute(

                    name: "default",

                    pattern: "{controller=Home}/{action=Index}/{id?}");

            });

        }

    }

}


#appsettings.Development.json#

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "ConnectionStrings": {
    "BloggingDatabase": "Server=xxx.xxx.xxx.xxx;Database=testdb;Trusted_Connection=True;User Id=myid;Password=myPassword;Integrated Security=false;"
  }

}

#DbContext#

  protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)

        {

            var configuration = new ConfigurationBuilder()

                            .SetBasePath(Directory.GetCurrentDirectory())

                            .AddJsonFile("appsettings.json")

                           .Build();

            if (!optionsBuilder.IsConfigured)

            {

                var connectionString = configuration.GetConnectionString("BloggingDatabase");

        
                optionsBuilder.UseSqlServer(connectionString);

            }

        }

#appsettings.json#

{

  "ConnectionStrings": {

    "BloggingDatabase": "Server=xxx.xxx.xxx.xxx;Database=testdb;Trusted_Connection=True;User Id=myid;Password=myPassword;Integrated Security=false;"

  },



  "Logging": {

    "LogLevel": {

      "Default": "Information",

      "Microsoft": "Warning",

      "Microsoft.Hosting.Lifetime": "Information"

    }

  },

  "AllowedHosts": "*"

}



Solution

  • I try code add-in dockerfile Environment variable after-show asp .net core error

    ENV ASPNETCORE_ENVIRONMENT=Development