.net6项目部署到linxu的docker中
.net6项目完成点击发布,进入发布页面
注意这里的目标运行时,不要选择linux系统,要选择 可移植。
项目中右键,添加docker支持,有些ide自动生成的代码,修改为如下代码:
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging. FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base WORKDIR /app EXPOSE 80 EXPOSE 443 #如果用system.sqlclient.dll访问数据库,需要加这一句 RUN sed -i 's/TLSv1.2/TLSv1.0/g' /etc/ssl/openssl.cnf COPY ./ ./ #FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build #WORKDIR /src #COPY ["FYSY.Demo/FYSY.Demo.csproj", "FYSY.Demo/"] #COPY ["FYSY.Comm/FYSY.Comm.csproj", "FYSY.Comm/"] #COPY ["FYSY.Domain/FYSY.Domain.csproj", "FYSY.Domain/"] #COPY ["FYSY.Model/FYSY.Model.csproj", "FYSY.Model/"] #RUN dotnet restore "FYSY.Demo/FYSY.Demo.csproj" #COPY . . #WORKDIR "/src/FYSY.Demo" #RUN dotnet build "FYSY.Demo.csproj" -c Release -o /app/build # #FROM build AS publish #RUN dotnet publish "FYSY.Demo.csproj" -c Release -o /app/publish /p:UseAppHost=false # #FROM base AS final #WORKDIR /app #COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "FYSY.Demo.dll"]
采用文件系统的方式发布项目,然后将发布后的文件传输到linux系统中,我这里使用的XShell和XFtp,我这里上传到了/root/app/testDocker中。
创建镜像文件,文件上传后,进行文件所在目录,cd 文件目录 。然后使用以下命令 创建镜像文件 注意后面的 . 不能少,如:docker build -t dotnet6:1.0 .
docker build -t 镜像名称:版本号 .
启动运行容器 ,使用下面的命令启动容器 其中8001是系统的端口号,80是容器 --restart=always 表示容器停止后自动重启(比如服务器重启了),如果运行容器时没有加这个参数,可以使用docker container update --restart=always 容器名字 来修改, -e TZ=Asia/Shanghai 表示指定容器的时区,以免.net core获取的时间不正确,-d表示后台运行, -v 是指定挂载目录/home/OnlineBusiness/dotnet_docker_test宿主机目录,当然没有挂载文件可以不写,:后面的是docker应用内目录
docker run -d -p 8030:80 --name 容器名称 --restart=always -e TZ=Asia/Shanghai -d -v /home/OnlineBusiness/dotnet_docker_test:/app 镜像名称:版本号
如:docker run -d -p 8030:80 --name mydotnet6 --restart=always -e TZ=Asia/Shanghai -d dotnet6:1.0
如果容器启动成功,可以使用docker ps查看运行中的容器,这时使用 服务器IP:端口号 及可访问系统,系统部署完成
docker日志目录 /var/lib/docker/containers/容器ID/容器ID-json.log