Asp net core EF Ошибка при создании миграции
При попытке создать миграцию пишет: Build started... Build succeeded. An error occurred while accessing the Microsoft.Extensions.Hosting services. Continuing without the application service provider. Error: Этот хост неизвестен. Unable to create an object of type 'AppDbContext'. For the different patterns supported at design time, see https://go.microsoft.com/fwlink/?linkid=851728 Process terminated with exit code 1.
Ошибка этот хост неизвестен вот мой файл docker-compose:
version: 3.9;
networks:
Test:
driver: bridge
services:
composetest:
image: composetest:latest
restart: always
container_name: composetest
build:
context: .
dockerfile: Dockerfile
ports:
- "80:80"
networks:
- Test
depends_on:
- postgres_db
postgres_db:
container_name: postgres
image: postgres:latest
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: 123
POSTGRES_DB: DB
ports:
- "5432:5432"
networks:
- Test
volumes:
- post-data:/var/lib/postgresql/data
volumes:
post-data:
DbContext:
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
{
}
public DbSet<User> Users { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfiguration(new UserConfiguration());
base.OnModelCreating(modelBuilder);
}
}
файл docker:
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY ["COMPOSETEST/COMPOSETEST.csproj", "COMPOSETEST/"]
RUN dotnet restore "COMPOSETEST/COMPOSETEST.csproj"
COPY . .
WORKDIR "/src/COMPOSETEST"
RUN dotnet build "COMPOSETEST.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "COMPOSETEST.csproj" -c Release -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "COMPOSETEST.dll"]
вот файл appsetings.json:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"DB": "Server=postgres_db;port=5432;User id=postgres;password=123;database=DB"
}
}
вот подключение к бд:
var connectionString = builder.Configuration.GetConnectionString("DB");
builder.Services.AddDbContext<AppDbContext>(options =>
{
options.UseNpgsql(connectionString);
});
база данных Postgres контейнеры запускаются без ошибок
Источник: Stack Overflow на русском