.net项目通过docker部署步骤

77 阅读1分钟

部署到docker

1、右键minimalapi项目,添加docker支持

2、选择linux

3、会添加Dockerfile文件

//来自aspnetcore基础镜像,抓取基础依赖包,端口80
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80

//把我们的文件复制到相应位置
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["Zhaoxi.NET6.MinimalApi/Zhaoxi.NET6.MinimalApi.csproj", "Zhaoxi.NET6.MinimalApi/"]
COPY ["Zhaoxi.NET6.Interfaces/Zhaoxi.NET6.Interfaces.csproj", "Zhaoxi.NET6.Interfaces/"]
COPY ["Zhaoxi.NET6.Models/Zhaoxi.NET6.Models.csproj", "Zhaoxi.NET6.Models/"]
COPY ["Zhaoxi.NET6.Db/Zhaoxi.NET6.Db.csproj", "Zhaoxi.NET6.Db/"]
COPY ["Zhaoxi.NET6.Services/Zhaoxi.NET6.Services.csproj", "Zhaoxi.NET6.Services/"]
RUN dotnet restore "Zhaoxi.NET6.MinimalApi/Zhaoxi.NET6.MinimalApi.csproj"
COPY . .
//指定工作地址
WORKDIR "/src/Zhaoxi.NET6.MinimalApi"
//进行构建
RUN dotnet build "Zhaoxi.NET6.MinimalApi.csproj" -c Release -o /app/build

//指定发布地址
FROM build AS publish
RUN dotnet publish "Zhaoxi.NET6.MinimalApi.csproj" -c Release -o /app/publish

//指定启动命令
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Zhaoxi.NET6.MinimalApi.dll"]

4、手动添加docker-compose.yml文件(必须是此名称)

注意,这种脚本语言空格也是语法,类似python

version: '3.3'
services:
	//指定这个服务
  net6minmalapiservice:  
    build:
    	//指定构建时,上下文地址,就是解决方案文件夹名称
      context: ./Zhaoxi.NET6.Demo/
    	//在上面的路径的相对路径中找到dockerfile文件
      dockerfile: ./Zhaoxi.NET6.MinimalApi/Dockerfile
  	//通过dockerfile文件生成一个全局的镜像文件
    image: minimalapi:2022
  	//容器名称
    container_name: "minimalContainer"   
  	//监听端口,在容器内的80端口映射到系统中的8070
    ports:
      - 8070:80/tcp
    command: ["dotnet", "/app/Zhaoxi.NET6.MinimalApi","--urls=http://*:80","--ip=127.0.0.1"]
   

5、将所有项目代码复制到虚拟机中,并上传docker-compose.yml到对应位置

注意,不需要上传编译后的

目录要和dockerfile文件目录对应

进入到docker-compose.yml所在路径

开始构建

docker-compose up

路径不对会报错(路径问题会有各种报错,下面是其中的一种)

下面是正常构建的过程

构建成功

没有异常

启动成功,在80端口(容器内部监听80端口)

再启动一个session连接,可以看到容器启动成功

在windows系统上可以成功访问

http://192.168.186.128:8070/swagger/index.html