开放的编程资料库

当前位置:我爱分享网 > C#教程 > 正文

C# 码头工人

在本文中,我们展示了如何将Docker用于C#应用程序。

应用程序容器化是一种操作系统级别的虚拟化方法,用于部署和运行分布式应用程序,而无需为每个应用程序创建一个完整的虚拟机。使用容器,可以在单个主机上运行多个隔离的应用程序或服务并访问相同的操作系统内核。容器可在裸机系统、云实例或虚拟机上运行。

泊坞窗

Docker是一个供开发人员和系统管理员使用容器构建、运行和共享应用程序的平台。Docker提高了应用程序的可移植性和可扩展性。它提供应用程序隔离,从而消除了由库和环境差异引起的许多问题。它有助于自动化开发和部署。借助预定义的社区图像,开发人员可以节省时间并改善他们的整体体验。

Docker镜像是一个只读模板,其中包含创建Docker容器的说明。Docker容器是图像的可运行实例。

图像存储在存储库中。DockerHub是官方的Docker存储库。Docker引擎是使用Docker的组件和服务构建和运行容器的底层客户端-服务器技术。

Dockerfile是一个特殊文件,其中包含构建Docker映像所需的指令。

$ docker --version
Docker version 20.10.21, build baeda1f

这是我们使用的Docker版本。

C#Docker控制台示例

在下一个示例中,我们将创建并运行一个非常简单的Docker映像。当我们运行图像时,将执行控制台C#应用程序。

$ dotnet new console -o First

我们创建一个新的C#应用程序。

Console.WriteLine("C# in Docker");

Console.WriteLine(Environment.OSVersion);
Console.WriteLine(Environment.Version);
Console.WriteLine(Environment.MachineName);

该应用程序是一个控制台程序。它打印一条消息和一些环境细节。

FROM bitnami/dotnet-sdk
WORKDIR /app
COPY . .
RUN dotnet restore

RUN dotnet publish -c Release -o out
CMD ["dotnet", "out/First.dll"]

Dockerfile是构建镜像的一系列命令。

FROM bitnami/dotnet-sdk

我们的图像基于bitnami/dotnet-sdk图像。它是由Bitnami提供的最新且安全的映像。

WORKDIR /app

我们需要设置一个构建目录。WORKDIR命令指示Docker使用指定目录作为所有后续命令的默认目标。

COPY . .

我们将所有文件复制到工作目录。

RUN dotnet restore

dotnetrestore安装当前目录范围内的.NET本地工具。

RUN dotnet publish -c Release -o out

dotnetpublish命令编译应用程序,读取项目文件中指定的依赖项,并将生成的文件集发布到目录。

CMD ["dotnet", "out/First.dll"]

CMD指令在启动容器时运行程序。

$ docker build -t first .

我们构建图像并将其称为pygetreq。

$ docker image ls
REPOSITORY               TAG          IMAGE ID       CREATED         SIZE
first                    latest       9bec9d62a4ba   4 minutes ago   1.13GB
web                      latest       2423121e25d3   5 months ago    131MB
hello                    latest       1525ae981450   5 months ago    966MB
docker/getting-started   latest       cb90f98fd791   7 months ago    28.8MB

我们使用dockerimagels命令列出可用的图像。

$ docker run first

Welcome to the Bitnami dotnet-sdk container
Subscribe to project updates by watching https://github.com/bitnami/containers
Submit issues and feature requests at https://github.com/bitnami/containers/issues

C# in Docker
Unix 5.10.104.0
7.0.0
a75c8bf3c3bf

我们运行图像。

$ dotnet run
C# in Docker
Unix 5.15.0.56
7.0.0
andromeda

这是程序在我们本地机器上的输出。

C#DockerASP.NET示例

在下面的示例中,我们在Docker映像中创建了一个ASP.NET。

$ dotnet new web --no-https -o WebApp

我们创建一个新的网络应用程序。

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "home page\n");
app.MapGet("/about", () => Results.Content("about page\n"));
app.MapGet("/contact", () => "contact page\n");

app.Run("http://0.0.0.0:3000");

应用程序使用MinimalAPI;它具有三个端点并映射到端口3000。

FROM bitnami/dotnet-sdk
WORKDIR /app
COPY . .
RUN dotnet restore

RUN dotnet publish -c Release -o out

EXPOSE 3000
CMD ["dotnet", "out/WebApp.dll", "--urls=http://0.0.0.0:3000"]

Dockerfile包含构建镜像的说明。

$ docker build . -t webapp

我们构建图像。

$ docker run -p 3000:3000 webapp

我们运行图像。容器的3000端口映射到我们主机的3000端口。

$ curl localhost:3000
home page
$ curl localhost:3000/about
about page

我们使用curl工具测试应用程序。

在本文中,我们使用了C#和Docker。

列出所有C#教程。

未经允许不得转载:我爱分享网 » C# 码头工人

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏