ASP.NET Core Docker 部署 Dockerfile

发布时间 2023-06-13 11:06:22作者: MaxBruce

原文:https://blog.csdn.net/KingCruel/article/details/113780977

1、新建 ASP.NET Core Web 应用程序
2、发布

3、导航到【发布文件夹】,新建一个【Dockerfile】文件【没有后缀】

# Dockerfile 分为四部分
基础镜像信息:FROM
维护者信息:MAINTAINER
镜像操作指令:RUN,ADD,COPY......
容器启动时执行命令:CMD,ENTRYPOINT

如果是编译发布好的格式如下
# Step 1:创建 Dockerfile 文件

# 设置(使用)基础运行时镜像
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base

# FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
# FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base
# FROM mcr.microsoft.com/dotnet/runtime:6.0 AS base
# FROM centos:centos7.5.1804

# 作者信息
MAINTAINER ZhangSan "zhangsan@163.com"

####
# FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
# FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build
# FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build

# 设置工作目录
WORKDIR /app

# 暴露80端口,通过-P参数来发布EXPOSE导出的所有端口
EXPOSE 80
EXPOSE 443

# 把目录下的内容都复制到当前目录下
COPY . .

# 运行镜像入口命令和可执行文件名称
ENTRYPOINT ["dotnet", "DockerProject.dll"]
4、Docker 操作,导航到【发布文件夹】,输入 cmd
# Step 2:创建、构建镜像

# 创建镜像,注意后边的那个.
docker build -t netcore31v0210 .

# 查看镜像
docker images
# Step 3:创建并运行容器
run 命令:创建一个新的容器,并运行一个命令
创建基于该镜像的docker容器,并启动

docker run --name=<容器名称> -d<后台运行> -p <宿主机端口>:<容器端口> <关联镜像>

docker run --name=container5 -itd -p 8082:80 netcore31v0210
docker run --name=container4 -it -p 8079:80 netcore31v0210

docker run --name=container1 -d -p 8076:80 netcore31v0210
docker run --name=container2 -d -p 8077:80 netcore31v0210
docker run --name=container3 -d -p 8078:80 netcore31v0210

5、浏览器访问
打开浏览器,地址栏输入http://localhost:8079/weatherforecast

6、Dockerfile 源码构建镜像
ASP.NET Core Web API 项目结构

# Step 1:本地创建 Dockerfile 文件【Visual Studio 2022 项目右键,可以直接添加Dockerfile文件】
# Step 2:Linux服务器源码路径

# Step 3:把 Dockerfile 文件拷贝到 Linux 服务器部署文件的根目录,Dockerfile 文件内容如下
注意:把 Dockerfile 文件拷贝到 Linux 服务器部署文件的根目录

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
WORKDIR /src
COPY ["Grade1Class1/Grade1Class1.csproj", "Grade1Class1/"]
RUN dotnet restore "Grade1Class1/Grade1Class1.csproj"
COPY . .
WORKDIR "/src/Grade1Class1"
RUN dotnet build "Grade1Class1.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "Grade1Class1.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Grade1Class1.dll"]
Dockerfile 文件关键信息

# Step 4:创建、构建镜像

# 跳转到部署文件的根目录
cd /home/king/dotnet/20221123/DockerProject

# 注意后边的 .
# 执行 build 命令,生成一个镜像文件,镜像名称叫做【net3v1123:2221】
docker build -t net3v1123:2221 -f Dockerfile .
# -t 标签

# 查看镜像
docker images

# 执行 run 命令,创建并运行容器,注意上边的镜像名称使用的是【net3v1123:2221】
docker run -itd -p 8076:80 --name docker8076 net3v1123:2221

# 查看容器
docker ps
镜像、容器信息

# Step 5:浏览器访问
打开浏览器,地址栏输入http://localhost:8076/weatherforecast
————————————————
版权声明:本文为CSDN博主「KingCruel」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/KingCruel/article/details/113780977