バージョン
問題
DockerでASP.NET Coreプロジェクトを実行しています。 docker-compose upすると、次のようになります。
Unhandled Exception: Microsoft.Build.BackEnd.NodeFailedToLaunchException: The FileName property should not be a directory unless UseShellExecute is set. ---> System.ComponentModel.Win32Exception: The FileName property should not be a directory unless UseShellExecute is set.
at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
at Microsoft.Build.BackEnd.NodeProviderOutOfProcBase.LaunchNode(String msbuildLocation, String commandLineArgs)
--- End of inner exception stack trace ---
at Microsoft.Build.CommandLine.MSBuildApp.BuildProject(String projectFile, String[] targets, String toolsVersion, Dictionary`2 globalProperties, Dictionary`2 restoreProperties, ILogger[] loggers, LoggerVerbosity verbosity, DistributedLoggerRecord[] distributedLoggerRecords, Int32 cpuCount, Boolean enableNodeReuse, TextWriter preprocessWriter, Boolean detailedSummary, ISet`1 warningsAsErrors, ISet`1 warningsAsMessages, Boolean enableRestore, ProfilerLogger profilerLogger, Boolean enableProfiler)
at Microsoft.Build.CommandLine.MSBuildApp.Execute(String[] commandLine)
at Microsoft.Build.CommandLine.MSBuildApp.Main(String[] args)
エラーは、dockerfileのdotnet restore
行にヒットしたときに発生するようです。
権限を確認した後、dockerは直接関連するすべてのファイル/フォルダーに対する読み取り/書き込み権限を持っているようです
今朝いくつかの更新があり、この投稿の他の人も彼らが持っていたと言っていました。それらが同じ更新であったかどうかは不明です。しかし、いくつかの更新がありました。 これがすべて発生し始めた朝の更新ログです 。
私のDockerfileはそうです:
FROM Microsoft/dotnet:2.1.403-sdk as dotnet
WORKDIR /vsdbg
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
unzip \
&& rm -rf /var/lib/apt/lists/* \
&& curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v latest -l /vsdbg
WORKDIR /ProjA
# Install TRX -> JUnit log file converter
# https://github.com/gfoidl/trx2junit
RUN dotnet tool install -g trx2junit
RUN export PATH="$PATH:/root/.dotnet/tools"
COPY ProjA.sln .
COPY ProjA/ProjA.csproj ./ProjA/
COPY ProjA.Tests/ProjA.Tests.csproj ./ProjA.Tests/
COPY ProjB/ProjB.csproj ./ProjB/
COPY ProjC/ProjC.csproj ./ProjC/
RUN mkdir ProjA.Tests/tmp
RUN dotnet restore # ******* Error seems to happen here...
COPY . .
WORKDIR /ProjA/ProjA/
CMD ["dotnet", "run"]
私はubuntu 9.04でも同じ問題がありました。 linux-generic=5.0.0.13.14
にダウングレードしましたが、現在は機能しています。
次のコマンドを実行してください:
Sudo apt install linux-image-generic=5.0.0.13.14 linux-headers-generic=5.0.0.13.14 linux-generic=5.0.0.13.14
次に、「Ubuntu詳細オプション」を使用して再起動し、linux-generic_5.0.0.13.14
optonを選択します。
このバグはUbuntuで確認されています: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1843018
関連する.net Coreの問題: https://github.com/dotnet/corefx/issues/4085
ソリューション
apt-add-repository -y ppa:teejee2008/ppa
apt-get update
apt-get install ukuu
ukuu --install-latest
リブート
uname -sr
私は昨日から同じ問題に取り組んできましたが、kali linuxから問題なく作成して作業したため、ubuntunから問題が発生しましたが、18.04と19.04で試行してもエラーが発生し続けました。
Dockerバージョン
Version: 19.03.2
API version: 1.40
Go version: go1.12.8
Git commit: 6a30dfc
Built: Thu Aug 29 05:29:11 2019
OS/Arch: linux/AMD64
Experimental: false
Dockerfile
FROM Microsoft/dotnet:2.1-sdk AS build
COPY . project/
WORKDIR /project
run dotnet restore dotnet.sln
FROM build AS publish
WORKDIR /Project/
RUN dotnet publish dotnet.sln -c Release -o /app
FROM Microsoft/dotnet:2.1-aspnetcore-runtime AS runtime
COPY . Project/
WORKDIR /app
EXPOSE 8003
FROM runtime AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "dotnet.dll"]