部署到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系统上可以成功访问