ARM M1 Mac,在 azure 应用程序服务中使用 Azure 容器注册表来获取 dotNet 8 api:未响应端口 80 上的 HTTP ping,站点启动失败

问题描述 投票:0回答:1

我用的是苹果m1。 我有一个基本的 dotNet 8 Web api,可以在我的本地 docker 上运行

程序.cs

var builder = WebApplication.CreateBuilder(args);
var port = Environment.GetEnvironmentVariable("PORT") ?? "80";
builder.WebHost.UseUrls($"http://*:{port}");
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddControllers();

var app = builder.Build();
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}
app.UseHttpsRedirection();    
app.MapControllers();
app.Run();

Docker 文件

# build
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build-env
WORKDIR /app

# copy csproj and restore dependecies 
COPY *.csproj ./
RUN dotnet restore

# Copy others files and build
COPY . ./
RUN dotnet publish -c Release -o out

# run
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
EXPOSE 80
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "BgxApi8.dll"]

它适用于本地docker

docker build -t bgxapi8 .
docker run -p 80:80 bgxapi8
GET {{baseUrl}} -> "It works"

我尝试通过 Azure 容器注册表使其在 azure Web 应用程序上运行 我创建一个名为 bgxapi8container 的 Azure 容器注册表 我推本地 docker

docker tag bgxapi8:latest bgxapi8container.azurecr.io/bgxapi8:latest
docker push bgxapi8container.azurecr.io/bgxapi8:latest

然后从界面中我创建一个带有选项的网络应用程序: 操作系统:Linux 发布:容器 Docker 选项:独特的容器 图片来源:Azure 容器注册表 注册表:bgxapi8container 标签: 最新 启动命令:无

当我尝试访问 api 的根目录时,我收到此错误消息:“( 应用程序错误 如果您是应用程序管理员,则可以访问诊断资源。”

如果我查看日志,我有这个

...2023-12-02T09:02:39.420Z 信息 - e194839a3db8 拉完成 2023-12-02T09:02:40.160Z 信息 - 摘要: sha256:1ac77a5b131c17b141f23e7fe360eb92d9d2d405c5e4783b23261c8f49d031c2 2023-12-02T09:02:40.160Z 信息 - 状态:下载了更新的图像 bgxapi8container.azurecr.io/bgxapi8:最新 2023-12-02T09:02:40.165Z 信息 - 拉取镜像成功,耗时:16 秒 2023-12-02T09:02:41.162Z INFO - 启动站点容器 2023-12-02T09:02:41.162Z 信息 - docker run -d --expose=80 --name bgxapi8_0_d872b733 -e WEBSITE_USE_DIAGNOSTIC_SERVER=false -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=false -e WEBSITE_SITE_NAME=bgxapi8 -e WEBSITE_AUTH_ENABLED=False -e PORT=80 -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=bgxapi8.azurewebsites.net -e WEBSITE_INSTANCE_ID=d48e7722c44716b2d3b260fd39937cd26b4df2c1aad20041 8e83e1648d9c8bd5 bgxapi8container.azurecr.io/bgxapi8:最新 2023-12-02T09:02:41.162Z 信息 - 此容器未启用日志记录。请用 https://aka.ms/linux-diagnostics 启用日志记录以查看容器 在这里记录。 2023-12-02T09:02:43.219Z 信息 - 启动预热请求 到站点 bgxapi8 的容器 bgxapi8_0_d872b733 2023-12-02T09:02:43.244Z 错误 - 站点的容器 bgxapi8_0_d872b733 bgxapi8 已退出,站点启动失败 2023-12-02T09:02:43.249Z ERROR

  • 容器 bgxapi8_0_d872b733 未响应端口 80 上的 HTTP ping,站点启动失败。请参阅容器日志进行调试。 2023-12-02T09:02:43.280Z 信息 - 停止网站 bgxapi8 因为它 启动时失败。

您知道问题是什么以及如何解决吗?

azure docker arm azure-web-app-service apple-m1
1个回答
1
投票

当您提到您正在 Apple M1 上构建映像时,您回答了您的问题。这会生成一个可以在 ARM 平台上运行的映像,目前应用服务仅支持 AMD64。

在 M1 Mac 上,您可以使用 Buildx 构建多架构容器。通过这种方式,您可以构建 AMD64 版本的容器,并将其部署在容器应用程序上。 文档

另一种选择是使用 Azure 容器注册表构建容器映像。 文档

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.