docker - 在 Alpine 映像上运行 dotnet core 2.1 应用程序时出错
问题描述
在 Win10 机器上运行 Docker。已启用 Linux 容器。我的应用程序在 Windows 和 Debian 映像上运行良好,但是当我切换到 Alpine 时出现此错误
PS C:\Code\TestApp> docker run -it testapp:latest
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"/app/TestApp\": stat /app/TestApp: no such file or directory": unknown.
我尝试更改入口点以匹配一些示例,但没有骰子。
FROM microsoft/dotnet:2.1-runtime-deps-alpine3.7 AS base
WORKDIR /app
FROM microsoft/dotnet:2.1-sdk-alpine3.7 AS build
WORKDIR /src
COPY TestApp/TestApp.csproj TestApp/
RUN dotnet restore TestApp/TestApp.csproj
COPY . .
WORKDIR /src/TestApp
RUN dotnet build TestApp.csproj -c Release -o /app
FROM build AS publish
RUN dotnet publish TestApp.csproj -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
# This is for Windows and Debian images
# ENTRYPOINT ["dotnet", "TestApp.dll"]
ENTRYPOINT ["/app/TestApp"]
解决方案
在这个多阶段构建的不同阶段添加一些调试信息:
RUN ls -alrth /app
(在每个COPY
或RUN dotnet
命令之后)
并确保使用与您的第一个 Windows 构建不同的名称和标签来构建它,以确保不在您的 Linux 环境中尝试 Windows 构建的映像。
docker build -t testApp-linux ...
推荐阅读
- mysql - 如何在 Rails 中仅计算 GROUP BY 中的某些行
- c - 从函数返回时数组的维度
- angular - 如何在 Angular Material 按钮中自定义行高?
- javascript - React const App 功能 - 路由到 /home
- monaco-editor - 如何读取网络工作者内部的数据?
- r - 使用 data.table 粘贴列时如何忽略 NA?
- python - 如何将更改/更新数据传递到另一个弹出窗口?
- gzip - 如何在 C++ 中将 .json 文件压缩成 .json.gz 文件格式?
- sql - PostgreSQL 中 DATEADD 的等价物?
- php - 发布请求后我的会话被破坏