内容简介: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文件?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 软件工程造价估算标准》编制工作全面展开
- ATTCK-PenTester-Book:根据ATT&CK知识体系编制出长达400页的渗透手册
- Scala在资源文件夹中获取文件的文件路径
- Go语言的文件操作:文件的读写,文件的新建打开和删除
- 安卓文件存储/文件读写操作
- 文件上传之秒传文件
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python高效开发实战
刘长龙 / 电子工业出版社 / 2016-10 / 89
也许你听说过全栈工程师,他们善于设计系统架构,精通数据库建模、通用网络协议、后端并发处理、前端界面设计,在学术研究或工程项目上能独当一面。通过对Python及其周边Web框架的学习和实践,你就可以成为这样的全能型人才。 《Python高效开发实战——Django、Tornado、Flask、Twisted》分为3部分:第1部分是基础篇,带领初学者实践Python开发环境和掌握基本语法,同时对......一起来看看 《Python高效开发实战》 这本书的介绍吧!