如何编制微软.Net Core的docker文件?

栏目: ASP.NET · 发布时间: 6年前

内容简介:Microsoft .NET核心的一个主要特性是它能够在多个操作系统(Linux,Mac,Windows)和容器化环境中作为跨平台框架运行。Microsoft努力继续支持容器化环境并增强CI / CD管道。为了帮助您入门,Microsoft根据常见用例提供了许多不同的docker镜像供您使用。在这篇文章中,我将讨论在.NET Core中使用容器和Dockerfiles。本质上,A Dockerfile是一个包含指令集的纯文本,每条指令都列出了创建工作镜像所需的步骤,.NET Dockerfile也是这样:

Microsoft .NET核心的一个主要特性是它能够在多个操作系统(Linux,Mac,Windows)和容器化环境中作为跨平台框架运行。Microsoft努力继续支持容器化环境并增强CI / CD管道。为了帮助您入门,Microsoft根据常见用例提供了许多不同的 docker 镜像供您使用。在这篇文章中,我将讨论在.NET Core中使用容器和Dockerfiles。

本质上,A Dockerfile是一个包含指令集的纯文本,每条指令都列出了创建工作镜像所需的步骤,.NET Dockerfile也是这样:

例如:设置环境变量,复制文件或运行脚本。无论何时运行指令,都会在初始Docker基础镜像之上创建一个新层。

Docker基础镜像是构建层的起始点镜像(通常由具有OS配置的文件系统结构组成),以创建所有容器镜像。

例如,为了将LAMP堆栈作为Docker容器运行,您可以使用Ubuntu 14.04或CentOS 7或任何Linux OS作为基本镜像。然后,您将在其上安装Apache,MySQL和PHP,结果将是您的最终LAMP Docker镜像,可以作为容器运行。

基本dockerfile示例:

FROM ubuntu:15.04
COPY . /app
RUN make /app
CMD python /app/app.py

FROM:从ubuntu:15.04 Docker镜像创建一个图层。

COPY:将项目当前目录中的(复制)文件添加到Docker主机路径中。

RUN:用make构建你的应用程序。

CMD:指定在容器中运行的命令。

Dockerfile命令

FROM: FROM指令指示基本镜像并初始化后续指令和操作的新构建阶段。对于.NET核心应用程序,选择正确的根镜像非常重要:

From microsoft/dotnet:<version>-runtime-deps -

用于部署自包含的部署应用程序(编译成DLL):

From microsoft/dotnet: <version>-runtime -

用于部署.NET Core控制台应用程序:

From microsoft/dotnet: <version>-aspnetcore-runtime -

用于部署ASP.NET核心应用程序(编译成DLL并运行应用程序):

From microsoft/dotnet: <version>-sdk

COPY: COPY指令从中复制新文件或目录 (项目根文件夹)并将它们添加到路径中容器的文件系统 (Docker主机路径)。通常,.NET docker文件位于项目根文件夹中,复制指令将是

COPY <src>... <dest>
COPY . /app

RUN: RUN指令将在当前镜像的顶部执行任何命令并继续执行下一条指令。生成的已提交镜像将用于Dockerfile中的下一步。可以使用RUN命令执行.NET核心命令,如dotnet restore,dotnet build命令。

RUN dotnet restore
RUN dotnet build

CMD :CMD命令是为执行容器提供默认值。Dockerfile中只能有一条CMD指令。如果列出多个CMD,则只有最后一个CMD才会生效。

ENTRYPOINT :Entrypoint允许您将配置一个容器为可执行的。

WORKDIR :WORKDIR指令为RUN,CMD,ENTRYPOINT,COPY和ADD指令的设置工作目录。如果WORKDIR不存在,即使它未在任何后续Dockerfile指令中使用,也将创建它。如果提供了相对路径,则它将相对于先前WORKDIR指令的路径。例如:

WORKDIR /app
WORKDIR src
WORKDIR assets

输出路径Dockerfile将是/ app / src / assets。

.NETcore docker文件

FROM microsoft/aspnetcore-build:2.1
WORKDIR /app
COPY . ./app
RUN dotnet restore
RUN dotnet build
WORKDIR /app/src/MyApponDocker
ENTRYPOINT dotnet run

构建它:在PowerShell中切换到上述配置文件所在目录,运行

docker build -t dockerApp

Docker现在将开始构建镜像,下载并安装多个组件和包。

运行Docker

构建成功后,运行:

docker run -p 8080:80 dockerApp

这告诉Docker运行名为dockerApp的镜像。

重要:

microsoft/dotnet:-runtime-deps - 用于部署自包含的部署应用程序

microsoft/dotnet:-runtime - 用于部署.NET核心控制台应用程序

microsoft/dotnet:-aspnetcore-runtime - 用于部署ASP.NET核心应用程序

microsoft/dotnet:-sdk - 用于构建.NET Core(或ASP.NET核心应用程序)

.NET Core SDK - 这是构建.NET Core应用程序所需的。

.NET Core Runtime - 这是运行.NET Core应用程序所需的。

结论

现在,dotnet的Docker使.net应用程序能够在容器化的环境中完全运行而无需任何代码更改。与容器化带来的优势相结合。


以上所述就是小编给大家介绍的《如何编制微软.Net Core的docker文件?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Beginning iPhone and iPad Web Apps

Beginning iPhone and iPad Web Apps

Chris Apers、Daniel Paterson / Apress / 2010-12-15 / USD 39.99

It seems that everyone and her sister has developed an iPhone App—everyone except you, the hard-working web professional. And now with the introduction of the iPad, you may even feel farther behind. B......一起来看看 《Beginning iPhone and iPad Web Apps》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换