目标
创建一个.NetCore Web应用并使用Docker容器部署到Linux云服务器上运行。
准备工具
安装Docker Desktop(本地测试用)
VS2022开发工具(.NET CORE web)
Linux云服务器(部署用)
Xshell链接Linux云服务器的工具
1.使用VS2022新建一个ASP.NET Core Web应用
勾选启用Docker
Docker OS为Linux
接下来我们在本地使用docker测试一下(需要安装Docker Desktop),(如果不想本地测试的也可以跳过这些直接看第三部的服务器环境配置):
使用PowerShell进入到解决方案目录
然后执行打包成镜像,目录为项目名:
docker image build -f ./WebCoreCg02/Dockerfile -t aspnetcore:latest .
完成后可以使用docker images命令查看镜像
注意这个是名字,下面构建容器要用
然后构建容器
docker run --name=aspnetcore -p 8821:80 -d aspnetcore
--name :指定容器名称。
--p :指定容器端口。
--d :指定容器后台运行。
docker ps命令查看正在运行的容器
使用浏览器直接访问localhost:8821就能看到web网站了
2.云服务器环境配置
在腾讯云找个linux云服务器,用xshell链接上
然后执行下面的命令在服务器上安装docker和.NET6环境
A:安装docker
yum -y install docker-ce
如果执行后出现 No package docker-ce available 错误,
先执行下面
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
然后再执行安装yum -y install docker-ce
安装成功后启动
sudo systemctl start docker
设置开机启动
sudo systemctl enable docker
查看是否运行
systemctl status docker
B:安装.NetCoreSDK6.0
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
sudo yum install dotnet-sdk-6.0
检查环境:
dotnet --info
------------------------以上云服务器的环境准备好了后,接下来上传项目----
3.打包上传项目到服务器
然后回到VS2022项目里,(这里我又新建了一个.NET6 web项目 项目名为WebCoreWebCg03)
吧dockerfile文件属性改下,然后发布文件夹publish。
然后把项目打压缩包(注意要打zip格式的)。
然后回到Xshell里打命令rz会弹出选择上传文件
选择压缩包上传上去,然后ls看一下压缩包名字
后unzip -d WebCoreWebCg03 WebCoreWebCg03.zip进行解压,解压后看好自己解压的文件夹
解压后它又多套了一层文件夹,所以我们cd进去
进到dockerfule文件的上一层目录后,然后开始编译成镜像(就像上面在pc端测试的那样)
docker image build -f ./WebCoreWebCg03/Dockerfile -t aspnetcore:latest .
编译完成后,查看镜像
docker images
第一个就是我们刚才编译的镜像
将镜像运行起来生成容器
docker run --name=aspnetcore -p 8808:80 -d aspnetcore
这时候在浏览器输入地址和端口就能访问了
其他问题:
如果shell执行报错:
run database recovery error: cannot open Packages database in /var/lib/rpm…
解决办法:
[root@www rpm]# rm -f __db.* # 清除原rpmdb文件
[root@www rpm]# rpm --rebuilddb # 重建rpm数据库
[root@www rpm]# yum clean all # 清除所有yum的缓存