在 Raspberry Pi Swarm 上运行的 ASP.NET Core

pr177

我有一个带有多个 Raspberry Pi(树莓派光)的 Docker Swarm。我尝试在它们上运行 ASP.NET Core 容器作为服务/堆栈。

我有以下 Dockerfile:

FROM microsoft/dotnet:2.0-sdk AS build
WORKDIR /source
COPY WebApi.csproj .
RUN dotnet restore
COPY . .
RUN dotnet publish -c Release -o /publish -r linux-arm /p:PublishWithAspNetCoreTargetManifest="false"

FROM microsoft/dotnet:2.0-runtime-deps-stretch-arm32v7
ENV ASPNETCORE_URLS http://+:80
WORKDIR /app
COPY --from=build /publish .
ENTRYPOINT [ "./WebApi" ]

工作原理:在我的 win10 笔记本电脑上构建和推送容器映像(直到 sdk 映像仅适用于 x64)并在单个树莓节点上运行容器docker run

docker run --rm -it myrepo/myimage
Hosting environment: Production
Content root path: /app
Now listening on: http://[::]:80
Application started. Press Ctrl+C to shut down.

(所以容器可以运行并且它没有 arm vs x64 问题)

什么不起作用

docker service create myrep/myimage
2n4ahyhgb3ju5rvo97tekh9vg
overall progress: 0 out of 1 tasks
1/1: no suitable node (unsupported platform on 3 nodes)

当然docker stack deploy

如果我检查创建的图像(甚至arm32v7来自微软图像),它只是说明amd64而不是arm.

"Architecture": "amd64",
"Os": "linux",

那么这是元数据错误的情况吗?如果您使用 swarm,哪个仅由 docker 检查?我怎样才能改变它/让它运行?自己构建基础镜像?我错过了什么吗?

编辑 1我尝试使用 .NET Core 2.1 图像并具有相同的行为。

pr177

借助昨天发布的最新 .NET Core 2.1 Preview 2 图像,它终于可以工作了。

更新(添加 Dockerfile):这个简单的应该可以解决问题:

FROM microsoft/dotnet:2.1-sdk-stretch-arm32v7 AS builder
ENV DOTNET_CLI_TELEMETRY_OPTOUT 1
WORKDIR /src
COPY *.csproj .
RUN dotnet restore
COPY . .
RUN dotnet publish -c Release -o /publish -r linux-arm

FROM microsoft/dotnet:2.1-runtime-deps-stretch-slim-arm32v7
WORKDIR /app
COPY --from=builder /publish .
ENTRYPOINT [ "./MyService" ]

你现在甚至可以在你的树莓派上构建你的图像。但请注意,它仍然是一个(很好的工作)预览。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章