#docker #asp.net-core #dockerfile #.net-5 #pull
Вопрос:
У меня проблема с приложением push and pull .net5 в докере. Я постараюсь показать структуру своего проекта
Solution
Shared
Dll1 (.Net Standard 2.1)
Dll2 (.Net Standard 2.1)
Dll3 (.Net Standard 2.1)
Dll4 (.Net Standard 2.1)
Dll5 (.Net Standard 2.1)
WebUI (.NET 5)
Каждая библиотека dll используется WebUI
Моя производственная ОС-Debian 10.9/11 с последней версией docker на отдельном ПК, и я работаю с Windows 10 и VS 2019.
Используя change centect, у меня есть удаленный доступ с моего компьютера (создайте новый контент на локальной машине и подключитесь по ssh).
Следующим шагом я добавляю поддержку Docker.. в свой WebUI — автоматически создается Dockerfile
и .dockerignore
до этого момента все в порядке
Теперь я хочу опубликовать приложение в удаленном докере. К сожалению, уже при выполнении команды
docker build -t counter-image -f Dockerfile .
Я вижу сообщение об ошибке
> [build 12/12] RUN dotnet build "WebUI.csproj" -c Release -o /app/build:
#20 0.616 Microsoft (R) Build Engine version 16.11.0 0538acc04 for .NET
#20 0.616 Copyright (C) Microsoft Corporation. All rights reserved.
#20 0.616
#20 2.421 Determining projects to restore...
#20 3.849 All projects are up-to-date for restore.
#20 6.869 Dll1 -> /app/build/Dll1.dll
#20 6.923 Dll2 -> /app/build/Dll2.dll
#20 7.019 Dll3 -> /app/build/Dll3.dll
#20 10.30 /src/Dll4/DbContext.cs(20,32): warning CS0114: 'DbContext.UserRoles' hides inherited member 'IdentityDbContext<ApplicationUser, IdentityRole, string, IdentityUserClaim<string>, IdentityUserRole<string>, IdentityUserLogin<string>, IdentityRoleClaim<string>, IdentityUserToken<string>>.UserRoles'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword. [/src/Dll4/Dll4.csproj]
#20 10.56 Dll4 -> /app/build/Dll4.dll
#20 12.27 dll5 -> /app/build/dll5.dll
#20 12.67 /root/.nuget/packages/microsoft.typescript.msbuild/4.1.4/tools/Microsoft.TypeScript.targets(551,5): error MSB6003: The specified task executable "node" could not be run. System.ComponentModel.Win32Exception (2): No such file or directory [/src/WebUI/WebUI.csproj]
#20 12.67 /root/.nuget/packages/microsoft.typescript.msbuild/4.1.4/tools/Microsoft.TypeScript.targets(551,5): error MSB6003: at System.Diagnostics.Process.ForkAndExecProcess(String filename, String[] argv, String[] envp, String cwd, Boolean redirectStdin, Boolean redirectStdout, Boolean redirectStderr, Boolean setCredentials, UInt32 userId, UInt32 groupId, UInt32[] groups, Int32amp; stdinFd, Int32amp; stdoutFd, Int32amp; stderrFd, Boolean usesTerminal, Boolean throwOnNoExec) [/src/WebUI/WebUI.csproj]
#20 12.67 /root/.nuget/packages/microsoft.typescript.msbuild/4.1.4/tools/Microsoft.TypeScript.targets(551,5): error MSB6003: at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo) [/src/WebUI/WebUI.csproj]
#20 12.67 /root/.nuget/packages/microsoft.typescript.msbuild/4.1.4/tools/Microsoft.TypeScript.targets(551,5): error MSB6003: at System.Diagnostics.Process.Start() [/src/WebUI/WebUI.csproj]
#20 12.67 /root/.nuget/packages/microsoft.typescript.msbuild/4.1.4/tools/Microsoft.TypeScript.targets(551,5): error MSB6003: at Microsoft.Build.Utilities.ToolTask.ExecuteTool(String pathToTool, String responseFileCommands, String commandLineCommands) [/src/WebUI/WebUI.csproj]
#20 12.67 /root/.nuget/packages/microsoft.typescript.msbuild/4.1.4/tools/Microsoft.TypeScript.targets(551,5): error MSB6003: at TypeScript.Tasks.VsTsc.ExecuteTool(String pathToTool, String responseFileCommands, String commandLineCommands) [/src/WebUI/WebUI.csproj]
#20 12.67 /root/.nuget/packages/microsoft.typescript.msbuild/4.1.4/tools/Microsoft.TypeScript.targets(551,5): error MSB6003: at Microsoft.Build.Utilities.ToolTask.Execute() [/src/WebUI/WebUI.csproj]
#20 12.69
#20 12.69 Build FAILED.
#20 12.69
#20 12.69 /src/Dll4/DbContext.cs(20,32): warning CS0114: 'DbContext.UserRoles' hides inherited member 'IdentityDbContext<ApplicationUser, IdentityRole, string, IdentityUserClaim<string>, IdentityUserRole<string>, IdentityUserLogin<string>, IdentityRoleClaim<string>, IdentityUserToken<string>>.UserRoles'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword. [/src/Dll4/Dll4.csproj]
#20 12.69 /root/.nuget/packages/microsoft.typescript.msbuild/4.1.4/tools/Microsoft.TypeScript.targets(551,5): error MSB6003: The specified task executable "node" could not be run. System.ComponentModel.Win32Exception (2): No such file or directory [/src/WebUI/WebUI.csproj]
#20 12.69 /root/.nuget/packages/microsoft.typescript.msbuild/4.1.4/tools/Microsoft.TypeScript.targets(551,5): error MSB6003: at System.Diagnostics.Process.ForkAndExecProcess(String filename, String[] argv, String[] envp, String cwd, Boolean redirectStdin, Boolean redirectStdout, Boolean redirectStderr, Boolean setCredentials, UInt32 userId, UInt32 groupId, UInt32[] groups, Int32amp; stdinFd, Int32amp; stdoutFd, Int32amp; stderrFd, Boolean usesTerminal, Boolean throwOnNoExec) [/src/WebUI/WebUI.csproj]
#20 12.69 /root/.nuget/packages/microsoft.typescript.msbuild/4.1.4/tools/Microsoft.TypeScript.targets(551,5): error MSB6003: at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo) [/src/WebUI/WebUI.csproj]
#20 12.69 /root/.nuget/packages/microsoft.typescript.msbuild/4.1.4/tools/Microsoft.TypeScript.targets(551,5): error MSB6003: at System.Diagnostics.Process.Start() [/src/WebUI/WebUI.csproj]
#20 12.69 /root/.nuget/packages/microsoft.typescript.msbuild/4.1.4/tools/Microsoft.TypeScript.targets(551,5): error MSB6003: at Microsoft.Build.Utilities.ToolTask.ExecuteTool(String pathToTool, String responseFileCommands, String commandLineCommands) [/src/WebUI/WebUI.csproj]
#20 12.69 /root/.nuget/packages/microsoft.typescript.msbuild/4.1.4/tools/Microsoft.TypeScript.targets(551,5): error MSB6003: at TypeScript.Tasks.VsTsc.ExecuteTool(String pathToTool, String responseFileCommands, String commandLineCommands) [/src/WebUI/WebUI.csproj]
#20 12.69 /root/.nuget/packages/microsoft.typescript.msbuild/4.1.4/tools/Microsoft.TypeScript.targets(551,5): error MSB6003: at Microsoft.Build.Utilities.ToolTask.Execute() [/src/WebUI/WebUI.csproj]
#20 12.69 1 Warning(s)
#20 12.69 1 Error(s)
#20 12.69
#20 12.69 Time Elapsed 00:00:11.99
Попробуй:
- Переместите файл Dockerfile вверх из структуры
- Изменить путь в файле Dockerfile
все заканчивается ошибкой
, он просто хочет запустить
WebUI на удаленном докере как можно проще
Обновить
Докерфайл:
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["WebUI/WebUI.csproj", "WebUI/"]
COPY ["Shared/Dll1/Dll1.csproj", "Shared/Dll1/"]
COPY ["Shared/Dll2/Dll2.csproj", "Shared/Dll2/"]
COPY ["Shared/Dll3/Dll3.csproj", "Shared/Dll3/"]
COPY ["Dll4/Dll4.csproj", "Dll4/"]
COPY ["Dll5/Dll5.csproj", "Dll5/"]
RUN dotnet restore "WebUI/WebUI.csproj"
COPY . .
#WORKDIR "/src/WebUI"
#RUN dotnet build "WebUI.csproj" -c Release -o /app/build
#FROM build AS publish
RUN dotnet publish "WebUI.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebUI.dll"]
Комментарии:
1. В этой ситуации я бы просто запустил
ls
ваш скрипт, чтобы узнать, где, по его мнению, находится текущий домашний каталог и что он там может видеть. После некоторых проб и ошибок вы сможете решить свою проблему с исправлением. Кстати, мы действительно летим вслепую, если вы не собираетесь публиковать содержимое своего док-файла. Кроме того… вам действительно нужно создавать свой проект внутри докера? разве вы не можете строить снаружи?2. Я приложил
dockerfile
свое . Мне это не нужно, локальная сборка под W10 работает без каких-либо проблем. Тем не менее, это самый простой способ, который я нашел для публикации приложения на удаленном сервере docker. Помимо прочего, я помогал себе в этом учебном пособииhttps://www.youtube.com/watch?v=wQSuZFd01tYamp;t=1583 есть ли простое решение без сборки на докере?3. Похоже, у вас есть пользовательский шаг сборки в файле .csproj, который пытается запустить узел. Можете ли вы показать файл WebUI.csproj?
4. В .csproj у меня нет раздела «Пользовательские шаги сборки». Следуя по пути @Ник. McDermaid пропустить докер встроить в докер. В файле dockerfile публикуйте только на удаленной машине docker из binReleasenet5.0опубликовать не было бы проще?