为微服务生成 Dockerfile

在此练习中,你将了解如何创建微服务终结点,然后使用 Docker 对其进行容器化。

重要

若要完成本练习,请下载并安装 .NET SDK 和 Docker。 还需要文本编辑器,例如 Visual Studio Code

克隆代码

网站和 API 已为你创建完毕。 克隆 GitHub 中的存储库以检索代码。

  1. 打开命令提示符。
  2. 更改为要下载代码的目录。
  3. 运行以下命令,下载或克隆示例存储库:
git clone https://github.com/MicrosoftDocs/mslearn-dotnetmicroservices

该代码将下载到名为 mslearn-dotnetmicroservices 的新文件夹中。

为后端 Web API 创建 Dockerfile

下载代码后,我们将后端和前端微服务部署为 Docker 容器。 为此,我们需要创建一个 Dockerfile,指示 Docker 如何生成映像。

从刚刚在文本编辑器(如 VS Code)中克隆的存储库中打开后端目录。

在后端目录中,打开名为 Dockerfile 的文件,该文件将为空。

输入以下代码:

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY backend.csproj .
RUN dotnet restore
COPY . .
RUN dotnet publish -c release -o /app

这将在调用时按顺序执行以下步骤:

  • 拉取 mcr.microsoft.com/dotnet/sdk:6.0 映像并将其命名为 build
  • 将映像中的工作目录设置为 /src
  • 将在本地找到的名为 backend.csproj 的文件复制到刚创建的 /src 目录中
  • 在项目中调用 dotnet restore
  • 将本地工作目录中的所有内容复制到映像中
  • 在项目中调用 dotnet publish

现在,在最后一行的正下方输入以下内容:

FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
EXPOSE 80
EXPOSE 443
COPY --from=build /app .
ENTRYPOINT ["dotnet", "backend.dll"]

这将在调用时按顺序执行以下步骤:

  • 拉取 mcr.microsoft.com/dotnet/aspnet:6.0 映像
  • 将映像中的工作目录设置为 /app
  • 公开端口 80 和 443
  • 将上面创建的 build 映像的 /app 目录中的所有内容复制到此映像的应用目录中
  • 将此映像的入口点设置为 dotnet,并将 backend.dll 作为参数传递

保存 Dockerfile,打开命令提示符,然后导航到保存该文件的目录。

运行此命令以创建映像,并使用名称 pizzabackend 标记映像:

docker build -t pizzabackend .

这将运行当前目录中 Dockerfile 中的命令,并将标记 pizzabackend 应用于生成的映像。 

提示

如果 Docker 中提示错误,则可能是未正确安装。 运行以下命令验证:docker run hello-world 如果未在输出中看到“Hello from Docker!”,请按照此 Docker 安装教程进行操作。

大量输出后,将生成映像。 键入 docker images 将显示计算机上所有映像的列表,其中将列出 pizzabackend

若要运行 Web API 服务,请运行以下命令以使用 pizzabackend 映像启动新的 Docker 容器,并在端口 5200 上公开该服务:

docker run -it --rm -p 5200:80 --name pizzabackendcontainer pizzabackend

可以浏览到 http://localhost:5200/pizzainfo 并查看 Contoso Pizza 菜单的 JSON 表示形式。

给TA打赏
共{{data.count}}人
人已打赏
.NETDocker

什么是微服务?

2022-8-19 11:43:45

.NET

微服务业务流程

2022-8-19 12:07:19

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索