Visual Studio for Mac 中的 Docker 入门
重要
根据 Microsoft 的新式生命周期策略,Visual Studio for Mac 计划会于 2024 年 8 月 31 日停用。 虽然你可以继续使用 Visual Studio for Mac,但 Mac 上的开发人员还可以使用其他几个选项,例如适用于 VS Code 的新 C# 开发工具包扩展的预览版本。
使用 Visual Studio for Mac,可以轻松地生成、调试和运行容器化 ASP.NET Core 应用并将其发布到 Azure。
先决条件
安装和设置
对于 Docker 安装,请查看并遵循安装适用于 Mac 的 Docker Desktop 中的信息。
创建 ASP.NET Core Web 应用程序并添加 Docker 支持
- 通过转到“文件”>“新建解决方案”来创建新解决方案。
- 在“.NET Core”>“应用”下,选择“Web 应用程序”模板:
- 选择目标框架。 本示例将使用 .NET Core 2.2:
- 输入项目详细信息,例如名称(在此示例中为 DockerDemo)。 创建的项目包含生成并运行 ASP.NET Core Web 站点所需的所有基础知识。
- 在“解决方案”窗口中,右键单击 DockerDemo 项目并选择“添加”>“添加 Docker 支持”:
Visual Studio for Mac 自动将新项目添加到名为 docker-compose 的解决方案,并将 Dockerfile 添加到现有项目。
Dockerfile 概述
Dockerfile 是指用于创建最终 Docker 映像的方案。 请参阅 Dockerfile 引用,了解其中的命令。
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
WORKDIR /src
COPY DockerDemo/DockerDemo.csproj DockerDemo/
RUN dotnet restore "DockerDemo/DockerDemo.csproj"
COPY . .
WORKDIR "/src/DockerDemo"
RUN dotnet build "DockerDemo.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "DockerDemo.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "DockerDemo.dll"]
前面的 Dockerfile 基于 microsoft/aspnetcore 映像,并包括通过构建项目并将其添加到容器中修改基本映像的说明 。
注意
Visual Studio for Mac 创建的默认 Dockerfile 公开端口 80 用于传输 HTTP 流量。 若要启用 HTTPS 流量,请将 Expose 443
添加到 Dockerfile。
调试
将 docker-compose
项目设置为启动项目并开始调试(“运行”>“开始调试”)。 这将在容器中生成、部署和启动 ASP.NET 项目。
提示
安装 Docker Desktop 后首次运行时,在尝试进行调试时可能会收到以下错误:Cannot start service dockerdemo: Mounts denied
将 /usr/local/share/dotnet/sdk/NuGetFallbackFolder
添加到 Docker Desktop 中的“文件共享”选项卡:
生成完成后,将在 Safari 中启动应用程序:
请注意,容器将侦听某个端口(例如 http://localhost:32768
),此端口可能会有所不同。
若要查看正在运行的容器的列表,请在终端使用 docker ps
命令。
请注意以下屏幕截图中的端口中继(在 PORTS 下)。 这显示了该容器正在侦听我们在上面的 Safari 中看到的端口,并将请求中继到端口 80(在 Dockerfile 中定义)上的内部 Web 服务器。 从应用程序的角度来看,它正在侦听端口 80: