0

我正在尝试将 .net 应用程序部署到 Digital Ocean Kubernetes,但没有成功。创建简单的 web.yml 部署时,我看到状态日志返回ERROR,并且在 pod 上运行日志时,我看到以下内容:

standard_init_linux.go:228: exec user process caused: exec format error

我围绕这个错误做了一些研究,似乎我的架构不匹配。但是,我 99.999% 的架构是我的 Digital Ocean 集群是 AMD,我从以下 Dockerfile 构建的映像是 linux/arm64/v8。

我有以下 Dockerfile:

# syntax=docker/dockerfile:1
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /app 

# copy everything else and build app
COPY . .

RUN dotnet restore 

WORKDIR /app/ASCOM.Alpaca.Simulators
RUN dotnet publish -c Release -o out 

# Build runtime image
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime
WORKDIR /app 

COPY --from=build /app/ASCOM.Alpaca.Simulators/out ./

docker compose build我通过标准命令构建并推送到我的 docker hub 。

我查看了一些关于如何将其构建为 AMD 或其他的在线参考资料,但我目前似乎无法参考可行的潜在解决方案。

我有以下 docker-compose.yaml 文件:

version: "3.9"
services:
    web:
        build: .
        ports:
            - "80:32323"
        image: observerly/ascom-alpaca:latest
        command: ["dotnet", "ascom.alpaca.simulators.dll", "--urls=http://*:32323"]

我已经看到有关 buildkit 的主题......但我还没有真正理解为 .net 核心构建不同的拱形映像需要采取的确切步骤。

我运行docker manifest inspect --verbose mcr.microsoft.com/dotnet/aspnet:6.0它给了我可以使用 AMD64 的提示:

"platform": {
    "architecture": "amd64",
    "os": "linux"
}

任何专业提示都会很棒!

4

0 回答 0