引用地址:https://blog.youkuaiyun.com/xiaolong2850/article/details/125011893
一、准备好.net6的项目,后台或WebAPI都可以,一般我们用WebAPI做示例;
1、新建.net6 webapi项目,新建demo控制器,增加一个api方法的简单案例,如:GetDemo
2、调试,并保证程序能正常运行;
3、发布程序;
点击webapi项目,右键→【添加】→【Docker支持】→【Linux】
项目会生成一个Dockerfile文件
修改如下
发布webapi
打开发布生成的文件夹,并进行打包
二、将发布好的webapi程序上传到centos服务器上;
将文件上传到centos的home目录(推荐使用FinalShell,国产神器,文件直接拖拉即可上传下载,修改配置直接双击修改保存即可)
安装支持ZIP的工具
yum install -y unzip zip
解压上传的webapi文件
unzip demowebapi.zip
三、安装docker并查看是否能正常运行;
安装docker
1、安装依赖项
sudo yum install -y yum-utils
//官方:地址在国外,很慢
//sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
2、设置阿里云镜像源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、安装docker
sudo yum install docker-ce docker-ce-cli containerd.io
//如果报错了
//package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
//解决方法:
//进入阿里云镜像地址:https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/edge/Packages/找到你想要的或者最新的containerd.io包,拼接在阿里云地址后面,
//如下:
yum install -y https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.13-3.1.el7.x86_64.rpm
//然后再执行
yum install docker-ce docker-ce-cli containerd.io
4、启动 docker
sudo systemctl start docker
5、测试容器
sudo docker run hello-world
6、设置 docker 自启
sudo systemctl enable docker
7、检查自启状态
systemctl list-unit-files | grep docker
查看docker状态
systemctl status docker
四、通过docker下载nginx 镜像;
docker pull nginx
查看docker镜像,是否已经下载在镜像列表中
docker images
五、安装.net6环境;
安装前先运行以下命令,将microsoft包签名密钥添加到受信任密钥列表,并添加microsoft包储存库
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
安装运行时或sdk
一般安装运行时即可
sudo yum install dotnet-runtime-6.0
SDK
sudo yum install dotnet-sdk-6.0
运行下,查看.net状态及版本信息
dotnet --info
六、通过docker生成.net6项目 webapi镜像;
回到webapi目录
cd /home/demowebapi
编译成为镜像
docker build -t demowebapi:1.0.0 .
查看docker镜像是否已生成
docker images
添加到容器并启动
docker run --name webapi1 -d -p 8011:80 demowebapi:1.0.0
在浏览器访问8011端口 ,查看webapi是否正常
我们开启多个容器,指定不同端口
访问8012和8013端口是否正常
七、配置Nginx参数,集群和负责均衡;
步骤:1、docker启动Nginx;2、获取配置文件;3、并映射到磁盘中
docker run --name nginx -d -p 80:80 nginx:latest
创建映射的文件夹
mkdir -p /home/nginx/conf
mkdir -p /home/nginx/log
mkdir -p /home/nginx/html
从Nginx容器拷贝相关映射文件
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
docker cp nginx:/usr/share/nginx/html /home/nginx/
修改/home/nginx/conf/nginx.conf 配置文件,在http块里增加 upstream 项,weight代表权重,值越高访问越频繁;
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
upstream api_demoweb{
server localhost:8011 weight=3;
server localhost:8012 weight=3;
server localhost:8013 weight=1;
}
include /etc/nginx/conf.d/*.conf;
}
修改/home/nginx/conf/conf.d/default.conf 配置文件
server {
listen 80;
listen [::]:80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
proxy_pass http://api_demoweb;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
启动docker的nginx容器
//先停掉nginx容器再进行删除
docker stop 53da8ac26737
docker rm 53da8ac26737
//启动nginx并挂载映射的文件
//其中--net host 为映射端口,会随着配置文件server监听端口而变化,利于多端口使用;
docker run \
--net host \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-d nginx:latest
八、配置完毕后,打开看结果
至此步骤,已完成.net6 + docker +nginx 集群负载均衡了,感谢你的观看,如有误之处,敬请指出加以修正,谢谢你!
————————————————
版权声明:本文为优快云博主「策龙先生」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/xiaolong2850/article/details/125011893