1

这个问题应该很简单。

假设您正在尝试运行 Asp.Net Core Web Api。该应用程序将在干净安装的 Linux 内的 Docker 容器内运行(味道并不重要)。该容器位于 Kubernetes 集群中的 POD 中,该集群带有 docker 工具。

Dockerfile 需要以特定版本的 aspnetcore 为目标,看起来像这样:

FROM microsoft/aspnetcore:1.1
COPY . /app
WORKDIR /app 
EXPOSE 5000/tcp
ENV ASPNETCORE_URLS http://*:5000
ENTRYPOINT ["dotnet", "run"]

测试一下,我运行一个 Docker 命令......

在此处输入图像描述

所以我难倒的是这个;我假设的 ENTRYPOINT 定义中的“dotnet”命令正在运行.Net Core SDK。

如果此 Linux 代理上的容器未安装 SDK,或者安装的 SDK 是您尝试使用的 SDK 的旧版本,您将如何将其用于 docker build?本质上,入口点中的“dotnet”命令指的是一个不存在的程序?

我是否也应该将 SDK 与容器一起打包?如果是这样,该行是否应该读取ENTRYPOINT ["./dotnet", "run"]因为它在 Linux 上?如果是这样,我还需要执行哪些其他步骤来打包 SDK?

我的假设是 SDK 已经用 microsoft/aspnetcore:1.1 打包在容器中?如果是这样,有没有办法在 ENTRYPOINT 定义中引用打包的可执行文件?

任何见解将不胜感激!

4

1 回答 1

4

如果您需要 SDK,我认为您需要https://hub.docker.com/r/microsoft/aspnetcore-build/

您使用的图像仅包括运行时,而不包括 SDK。

于 2017-06-13T00:17:16.573 回答