Docker 与 ASP.NET
本文将逐步介绍如何从 ASP.NET 项目创建 Docker 镜像。
先决条件
- Docker 已安装
- ASP.NET Core SDK
- Visual Studio(或 VS Code)
1. 创建一个 ASP.NET Core 项目
创建一个新的 ASP.NET Core 项目(如果还没有创建的话)
dotnet new mvc -n MyProject
cd MyProject
2. 将 ASP.NET Core 应用程序容器化
要将 ASP.NET Core 应用程序容器化,您需要在项目目录中创建一个 Dockerfile 文件。Dockerfile
文件包含构建 Docker 镜像的指令。
在 ASP.NET Core 项目的根目录中创建一个名为“Dockerfile”的新文件,并添加以下内容:
# Use the official ASP.NET Core runtime image as a base
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
# Copy the published output of the ASP.NET Core application into the container
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["MyProject.csproj", "."]
RUN dotnet restore "./MyProject.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "MyProject.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "MyProject.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyProject.dll"]
此 Dockerfile 定义了一个多阶段构建过程:
第一阶段(基础阶段)设置基础镜像,开放 80 端口,并设置工作目录。
第二阶段(构建阶段)恢复依赖项,构建应用程序并发布。
第三阶段(发布阶段)将已发布的输出复制到另一个阶段。
最后阶段(最终阶段)设置运行时环境并指定应用程序的入口点。
3. 构建 Docker 镜像
创建 Dockerfile 后,您可以使用 docker build 命令构建 Docker 镜像。
docker build -t myproject .
此命令使用当前目录(.)中的 Dockerfile 构建一个名为 myproject 的 Docker 镜像。
现在我们的镜像已经准备好托管在 Docker 主机上,并可以下载到任何服务器进行部署和安装其依赖项
,但我们将首先在本地主机上进行测试。
4. 运行 Docker 容器
成功构建 Docker 镜像后,您可以使用以下命令运行 Docker 容器。
docker run -d -p 8080:80 --name myproject-container myproject
此命令基于 myproject 镜像启动一个名为 myproject-container 的 Docker 容器,并将主机上的 8080 端口映射到容器内的 80 端口(-p 8080:80)。
-d 标志以分离模式运行容器,允许其在后台运行。
5. 访问 ASP.NET Core 应用程序
Docker 容器运行后,您可以通过在 Web 浏览器中访问http://localhost:8080来访问 ASP.NET Core 应用程序。如果您在远程服务器上运行 Docker,请将 localhost 替换为服务器的 IP 地址。
文章来源:https://dev.to/hasanelsherbiny/docker-with-aspnet-4c0i