我正在使用这个 docker 文件来构建它
FROM microsoft/dotnet:2.1-sdk-alpine3.7 AS build
WORKDIR /app
COPY Packt.HelloWorld.csproj ./
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o /published
RUN ls -alrth /published
FROM microsoft/dotnet:2.1-runtime-deps-alpine3.7 AS base
WORKDIR /app
COPY --from=build /published .
RUN ls -alrth /app
# ENTRYPOINT ["dotnet", "TestApp.dll"] <-- I can run in Windows like this
ENTRYPOINT ["Packt.HelloWorld"]
调试ls
可以显示/app
文件夹下的所有文件
但是如果我用这个
入口点 ["/app/Packt.HelloWorld"]
它提示没有这样的路径。
docker: Error response from daemon: OCI runtime create failed:
container_linux.go:348: starting container process ca
used "exec: \"/app/Packt.HelloWorld\": stat /app/Packt.HelloWorld: no such file or directory": unknown.
如果我用
ENTRYPOINT ["Packt.HelloWorld"]
它给了我
docker: Error response from daemon: OCI runtime create failed:
container_linux.go:348: starting container process caused "exec:
\"Packt.HelloWorld\": executable file not found in $PATH": unknown.
图像似乎构建正常,内容也在其中,只是运行不成功。
任何人都可以提示我缺少什么吗?
谢谢
最佳答案
# ENTRYPOINT ["dotnet", "TestApp.dll"] <-- I can run in Windows like this
这也正是它在 Linux 上的工作方式。
看起来您正在执行框架相关部署(-r
或 --runtime
参数用于 dotnet publish
)。因此,在 Windows 上构建/运行的相同步骤也适用于 Linux。
关于linux - 如何在 Linux 中运行 asp dot net core 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51935397/