如何在Linux中运行asp点网核心映像?

时间:2018-08-20 16:58:32

标签: linux docker .net-core

我正在使用此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文件夹下的所有文件 但是,如果我使用

ENTRYPOINT ["/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.

图像似乎正常构建,并且内容也在那里,只是运行不成功。

任何人都可以给我提示我所缺少的吗?

谢谢

2 个答案:

答案 0 :(得分:1)

# ENTRYPOINT ["dotnet", "TestApp.dll"] <-- I can run in Windows like this

这几乎完全也应该在Linux上工作。

您似乎正在进行框架相关的部署(-r的{​​{1}}或--runtime参数)。因此,在Windows上构建/运行的相同步骤也应在Linux上运行。

答案 1 :(得分:0)

您需要指定dotnet-cli的publish子命令的运行时。另外,发布过程必须创建一个独立的应用程序。查看link了解更多信息。