asp.net core 发布到linux下Docker

时间:2023-11-13 23:55:50

1.linux Docker 安装

内核升级:https://www.cnblogs.com/zksfyz/p/7919425.html

安装:   https://www.runoob.com/docker/centos-docker-install.html

2.发布asp.net core

网上大部分教程都是采用编写Dockerfile文件的方法,然后打包程序到一个新镜像中,而我不用这种方法。我这里直接通过docker运行本地程序。

1、拉取镜像文件

拉取微软官方aspcore runtime镜像文件,执行“docker pull microsoft/dotnet:aspnetcore-runtime”,注意这里使用的是带“aspnetcore-runtime”TAG的镜像,这个镜像才有runtime。如果需要拉取特定的版本,比如2.1版本,可以用“docker pull microsoft/dotnet:2.1-aspnetcore-runtime”这样的写法,更多说明见https://hub.docker.com/r/microsoft/dotnet

拉取成功后通过“docker images”来查看

asp.net core 发布到linux下Docker

2、发布程序

asp.net core 发布到linux下Docker

注意部署模式改为“框架依赖”,目标运行时改为“可移植”。发布成功后将文件拷贝到服务器上,比如我放在“/home/www”下面。

最后执行“docker run -d -p 5000:80 -v /home/www:/app --workdir /app microsoft/dotnet:aspnetcore-runtime dotnet /app/MyServer.dll”,服务器就能跑起来了!

-d参数表示容器在后台运行,我们不需要进入到容器。

-p参数表示端口映射,“-p 5000:80”表示将容器的80端口映射到本地5000端口。

-v参数表示目录映射,将服务器的/home/www目录挂到容器的/app目录。

--workdir参数表示容器中服务程序的工作路径,也就是我们映射的/app目录。

“microsoft/dotnet:aspnetcore-runtime”表示要运行的镜像。

最后的"dotnet /app/MyServer.dll"表示容器启动后要执行的命令,这里也就是启动服务程序了,MyServer.dll是我的主程序文件名,你们修改为自己的即可。

最后可以通过"docker ps"来查看正在运行中的容器。