我制作了一个简单的.Net 6.0控制台应用程序,并使用带有linux arm 标志的dotnet publish命令构建了它
dotnet pubish-c发行版-r linux arm
上面生成linux ARM dll。
然后我使用Dockerfile为它创建了一个图像
FROM mcr.microsoft.com/dotnet/runtime:6.0
COPY bin/Release/net6.0/linux-arm /MyDockerApp
WORKDIR /MyDockerApp
ENTRYPOINT ["dotnet", "DockerTest.dll"]
(我没有构建它,因为我的代码已经使用dotnet发布为arm-v7构建了(
现在我正试图在我的Raspberry pi(Arm/Linux/v7(上作为容器运行此映像,但我收到了以下错误。
警告:请求的映像的平台(linux/aamd64(不匹配检测到的主机平台(linux/arm/v7(,并且没有特定的平台请求的standard_init_linux.go:228:exec用户进程导致:exec格式错误
我如何编译它,以便在我的Raspberrypi 4上运行它(我不想在Raspberry pi上构建我的代码,我只想使用RunTime(。
在Dockerfile
中为RaspberryPI
使用相应的ARM.NET运行时映像
例如,这个应该工作
FROM mcr.microsoft.com/dotnet/runtime:6.0.0-focal-arm32v7
而不是默认的
FROM mcr.microsoft.com/dotnet/runtime:6.0
这是用于普通PC的