.net core程序 发布到linux 和docker

 

首先要有个linux的系统环境,

这里测试使用centos8,可以到官网下载镜像。

使用VMware安装环境。

全都准备好之后 使用root登陆,或者 登录后在名称窗口使用

su         

命令获取root权限,输入完成后需要输入 root的 密码,回车。

然后安装.net core runtime 

参考官方地址:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-centos

命令

sudo dnf install aspnetcore-runtime-5.0

安装docker

yum -y install docker

启动docker

systemctl start docker

查看docker服务状态

systemctl status docker

以上说明docker安装成功

修改.netCore程序,修改program.cs文件

     public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>().UseUrls("http://*:5000");//linux 运行端口号,请自行修改
                });

右键项目添加docker支持

 

 

 修改Dockerfile

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
COPY . .
EXPOSE 5000  #这里的端口和前面的一样
ENTRYPOINT ["dotnet", "WebApi.core.dll"]

发布程序

 

 

 

 生成的文件可以压缩为zip使用ftp或iis下载的方式传到linux

也可以使用MobaXterm工具直接上传(推荐)

在上传后的路径直接打开命令窗口

解压

unzip  安装包.zip  -d 路径

打开到解压后的路径

cd  路径

运行 项目(--urls 后面的内容可以不加 端口和前面的保持一致)

dotnet  项目名.dll  --urls http://*.5000

正常就可以看到以下内容,代表运行成功

 

 

 输入命令 

ip addr 

查看linux地址,然后用ip:端口 即可访问程序。

二、使用docker发布

启动docker

//启动
sudo service docker restart
//c查看运行状态
sudu service docker status

 

 

 这个状态代表正常运行。

创建docker 镜像(后面的“.”非常重要,别忘记)

docker build -t 名字自己起  . 

查看镜像

docker images

运行镜像(-v 后面的路径为项目地址,使用后可以热更新, -p后面的端口前面对应的是访问端口,后面对应的是docker内的端口,即前面设置的端口)

  docker run -d --name webapi -v /home/admin/Public/website/docker/:/app -p 5001:5000   webapi

替换完程序后需要重启一下

docker restart  程序名称

另:附上一些用到的命令

docker -rm -f  nameorid       ##删除程序
docker -rmi -f  nameorid      ##删除镜像
firewall-cmd --zone=public --add-port=80/tcp --permanent ##开启防火墙某个端口
firewall-cmd --list-ports   ##查看已经开放的端口
systemctl stop firewalld  ##关闭防火墙
systemctl start firewalld ##开启防火窗
systemctl status firewalld  ##防火墙运行状态
systemctl reload firewalld  ##重启防火墙
top    ##查看运行的进程 排行
ctrl+C  退出正在运行的程序

 

posted @ 2021-09-03 16:15  周小杰  阅读(537)  评论(0编辑  收藏  举报