docker部署asp.net core,实现负载均衡,方便网站发布升级

负载均衡我选择了nginx,配置非常简单,我直接把代码贴出,不做解释了。至于如果在linux上搭建asp.net core的docker的运行,请参考 在Linux中使用全Docker方式来部署Asp.net Core mvc网站
location = / {  
proxy_pass http://backend;  
proxy_set_header Host backend.com;  
proxy_set_header Forwarded $remote_addr;  
}

upstream backend {
#ip_hash;
server 172.17.0.3:5000;
server 172.17.0.4:5000;
}

上面的后端服务器分别对应两个容器,Dockerfile文件是同一个做的,只是做了两个名字不一样的容器而已,步骤非常简单
docker run --name asyons1 -v /docker/asyons/wwwroot:/publish/wwwroot -d asyons1
docker run --name asyons2 -v /docker/asyons/wwwroot:/publish/wwwroot -d asyons2

获取容器IP的方式
docker inspect --format='{{.NetworkSettings.IPAddress}}' asyons1
docker inspect --format='{{.NetworkSettings.IPAddress}}' asyons2

/docker/asyons/wwwroot是静态资源文件,每次做容器的时候,不需要包括进去,两个容器可以共享一个宿主机器上的目录,网上发生文件上传最终可以保存到这里,这样两个容器都可以看见。

停止,启动,这个注意顺序,保持IP每次都一样,暂时没有考虑使用服务注册与发现。
docker stop mysql asyons1 asyons2 nginx
docker start mysql asyons1 asyons2 nginx

我们有时需要进入容器去看看,比如是否两个容器的静态资源是否同步了
docker exec -it asyons1 /bin/bash

阿里云centos基本上无法完成镜像的下载,只能本地save
docker save -o dotnet.tar docker.io/microsoft/dotnet:latest
docker save -o mysql.tar docker.io/mysql:latest
docker save -o nginx.tar docker.io/nginx:latest

大致就是这些命令,有些没有按照顺序,也有点凌乱,但是起码大家知道关键要做哪些事情。

Posted by 何敏 on 2017/05/01 10:46:17