Docker-Compose 一键部署Ningx+.Net Core+Redis集群
在看該文章前,你需要對(duì)Docker有所了解。
1、創(chuàng)建WebApp應(yīng)用程序
?我使用的是.Net Core 1.0.1版本,創(chuàng)建一個(gè)MVC應(yīng)用程序,并添加對(duì)Redis的引用。因?yàn)檫@些很基礎(chǔ),也很簡(jiǎn)單,這里就不詳細(xì)說明了,特別提一下有關(guān)多站點(diǎn)會(huì)話保持問題,這里介紹兩種方式,一種方式就是使用我博客里所說的方法?http://www.cnblogs.com/anech/p/6873604.html,還有一種方式就是采用Nginx代理的會(huì)話保持方案。
2、創(chuàng)建WebApp的Dockerfile文件
| FROM microsoft/aspnetcore:1.0.1 ENTRYPOINT [ "dotnet" ,? "TestCentOS.dll" ] ARG source=. ARG port=80 ENV ASPNETCORE_URLS http: //+:$port WORKDIR /app EXPOSE $port COPY $source . |
大意就是:使用microsoft/aspnetcore:1.0.1基礎(chǔ)鏡像創(chuàng)建一個(gè)新的鏡像,鏡像在運(yùn)行的時(shí)候執(zhí)行dotnet?TestCentOS.dll命令啟動(dòng)程序程序,把當(dāng)前目錄下的文件復(fù)制到鏡像中,并暴露一個(gè)指定的端口,如果未指定使用默認(rèn)80端口。
3、創(chuàng)建Nginx的Dockerfile文件
| FROM nginx EXPOSE 80 COPY? default .conf /etc/nginx/conf.d/ |
大意是:基于nginx基礎(chǔ)鏡像創(chuàng)建一個(gè)新的鏡像,對(duì)外暴露80端口,并把當(dāng)前目錄下的default.conf復(fù)制到鏡像的/etc/nginx/conf.d/目錄下。
default.conf文件內(nèi)容:
| upstream webapp{ ? server weba:80 max_fails=3 fail_timeout=20s;?? ? server webb:80 max_fails=3 fail_timeout=20s; } ? server { ????? listen?????? 80 default_server; ????? listen?????? [::]:80 default_server; ????? server_name? _; ????? location / { ????? proxy_pass http: //webapp/; ????? proxy_http_version 1.1; ????? proxy_set_header Upgrade $http_upgrade; ????? proxy_set_header Connection keep-alive; ????? proxy_set_header Host $host; ????? proxy_cache_bypass $http_upgrade; ????? } ????? error_page 404 /404.html; ????????? location = /40x.html { ????? } ????? error_page 500 502 503 504 /50x.html; ????????? location = /50x.html { ????? } ? } |
這里是對(duì)nignx進(jìn)行負(fù)載配置,配置兩個(gè)應(yīng)用的地址。
4、創(chuàng)建docker-compose.yml文件
| version:? '2' services: ?? nginx: ???? image: testnginx #??? build: #????? context: . #????? dockerfile: NginxDockerfile ???? ports: ?????? -? "5000:80" ???? links: ?????? - weba ?????? - webb????? ?? weba: ???? image: testweb #??? build: #????? context: . #????? dockerfile: Dockerfile ???? expose: ?????? -? "80" ???? links: ?????? - redis ?? webb: ???? image: testweb #??? build: #????? context: . #????? dockerfile: Dockerfile ???? expose: ?????? -? "80" ???? links: ?????? - redis ?? redis: ???? image: redis ???? expose: ?????? - 6379 |
這里為了方便,我先執(zhí)行上邊的Dockerfile文件創(chuàng)建了一個(gè).net core應(yīng)用的鏡像testweb和Nginx鏡像testnginx,然后我們?cè)趧?chuàng)建集群的時(shí)候都使用這兩個(gè)鏡像。也可以省去這一步,直接使用Dockerfile來創(chuàng)建,此時(shí)會(huì)創(chuàng)建三個(gè)鏡像,因?yàn)槲覀冞@里部署了兩個(gè)應(yīng)用weba和webb應(yīng)用和一個(gè)nginx。
這個(gè)yml文件的大意是:創(chuàng)建并啟動(dòng)4個(gè)容器,一個(gè)nginx容器,兩個(gè)webapp容器,一個(gè)redis容器,nginx對(duì)外暴露端口80與本機(jī)的5000端口映射,nginx容器可以訪問兩個(gè)webapp容器,兩個(gè)webapp容器都可以訪問redis容器。這樣我們就實(shí)現(xiàn)了Nginx代理請(qǐng)求,并分發(fā)至后端兩個(gè)webapp應(yīng)用,兩個(gè)webapp應(yīng)用使用redis服務(wù)。
5、執(zhí)行docker-compose.yml文件
| 1 | docker-compose up |
?該命令十分強(qiáng)大,它將嘗試自動(dòng)完成包括構(gòu)建鏡像,(重新)創(chuàng)建服務(wù),啟動(dòng)服 務(wù),并關(guān)聯(lián)服務(wù)相關(guān)容器的一系列操作。
此時(shí)訪問http://localhost:5000/ 便可看到效果。
原文地址:http://www.cnblogs.com/anech/p/6873828.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的Docker-Compose 一键部署Ningx+.Net Core+Redis集群的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通过Roslyn构建自己的C#脚本(更新
- 下一篇: asp.net core中负载均衡场景下