У меня есть проект .Net Core 3.0, который я пытался развернуть в док-контейнере, который, кажется, не может соединиться с контекстом базы данных с тех пор, как я обновил Core 2.2 до Core 3.0. Я могу нормально запустить проект локально, но когда он развернут в контейнере Docker, приложение зависает при первом вызове, когда я вызываю мой context
, что происходит в моем методе main()
в моем Program.cs
:
public static void Main(string[] args)
{
IHost host = CreateHostBuilder(args).Build();
using (IServiceScope scope = host.Services.CreateScope())
{
IServiceProvider services = scope.ServiceProvider;
try
{
VideoContext context = services.GetRequiredService<VideoContext>();
// my project never makes it past the following line:
context.Database.Migrate();
SeedData.Initialize(services);
}
catch (Exception e)
{
Console.WriteLine("error");
IErrorLogService logger = services.GetRequiredService<IErrorLogService>();
logger.LogError(e);
}
}
host.Run();
}
Приложение будет зависать бесконечно и никогда не преодолеет метод context.Database.Migrate()
. Даже не возникает исключение тайм-аута соединения SQL, поэтому оно должно быть чем-то еще до того, как оно попытается установить соединение SQL. Мой докер-контейнер тоже не выдает никаких ошибок.
Вот мой докер-файл:
FROM mcr.microsoft.com/dotnet/core/sdk:3.0.100 AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0.0
WORKDIR /app
# Make sure this folder exists
RUN mkdir -p /app/PrivateAssets/Attachments
COPY --from=build-env /app/out .
COPY secrets.json /root/.microsoft/usersecrets/44EFF06F-8817-4BCE-9CD3-872D7E944C3D/secrets.json
EXPOSE 80
ENTRYPOINT ["dotnet", "JPLTube.dll"]
Есть идеи, почему мое приложение зависает на неопределенное время? Пожалуйста, дайте мне знать, есть ли другие файлы, необходимые для отладки. Я подумал, что единственное, что нужно, это dockerfile
, потому что весь проект работает на моей локальной машине. Спасибо!