Docker-Compose 一键部署Ningx+.Net Core+Redis集群
在看该文章前,你需要对Docker有所了解。
1、创建WebApp应用程序
我使用的是.Net Core 1.0.1版本,创建一个MVC应用程序,并添加对Redis的引用。因为这些很基础,也很简单,这里就不详细说明了,特别提一下有关多站点会话保持问题,这里介绍两种方式,一种方式就是使用我博客里所说的方法 http://www.cnblogs.com/anech/p/6873604.html,还有一种方式就是采用Nginx代理的会话保持方案。
2、创建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基础镜像创建一个新的镜像,镜像在运行的时候执行dotnet TestCentOS.dll命令启动程序程序,把当前目录下的文件复制到镜像中,并暴露一个指定的端口,如果未指定使用默认80端口。
3、创建Nginx的Dockerfile文件
FROM nginx
EXPOSE 80
COPY default.conf /etc/nginx/conf.d/
大意是:基于nginx基础镜像创建一个新的镜像,对外暴露80端口,并把当前目录下的default.conf复制到镜像的/etc/nginx/conf.d/目录下。
default.conf文件内容:
   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 {
        }
    }
这里是对nignx进行负载配置,配置两个应用的地址。
4、创建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
这里为了方便,我先执行上边的Dockerfile文件创建了一个.net core应用的镜像testweb和Nginx镜像testnginx,然后我们在创建集群的时候都使用这两个镜像。也可以省去这一步,直接使用Dockerfile来创建,此时会创建三个镜像,因为我们这里部署了两个应用weba和webb应用和一个nginx。
这个yml文件的大意是:创建并启动4个容器,一个nginx容器,两个webapp容器,一个redis容器,nginx对外暴露端口80与本机的5000端口映射,nginx容器可以访问两个webapp容器,两个webapp容器都可以访问redis容器。这样我们就实现了Nginx代理请求,并分发至后端两个webapp应用,两个webapp应用使用redis服务。
5、执行docker-compose.yml文件
docker-compose up
该命令十分强大,它将尝试自动完成包括构建镜像,(重新)创建服务,启动服 务,并关联服务相关容器的一系列操作。
此时访问http://localhost:5000/ 便可看到效果。
文章出处:http://www.cnblogs.com/anech/p/6873828.html
Docker-Compose 一键部署Ningx+.Net Core+Redis集群的更多相关文章
- Docker Compose一键部署Nginx反向代理Tomcat集群
		
目录结构如下 mysql/conf/my.cnf [mysqld] user=mysql port=3306 datadir=/var/lib/mysql socket=/var/lib/mysql/ ...
 - Docker Compose 一键部署Nginx代理Tomcat集群
		
Docker Compose 一键部署Nginx代理Tomcat集群 目录结构 [root@localhost ~]# tree compose_nginx_tomcat/ compose_nginx ...
 - Docker Compose 一键部署LNMP
		
Docker Compose 一键部署LNMP 目录结构 [root@localhost ~]# tree compose_lnmp/ compose_lnmp/ ├── docker-compose ...
 - Docker Compose 一键部署多节点爬虫程序
		
Docker Compose 一键部署多节点爬虫程序 目录结构 [root@localhost ~]# tree compose_crawler/ compose_crawler/ ├── cento ...
 - CentOS7+Docker+MangoDB下部署简单的MongoDB分片集群
		
简单的在Docker上快速部署MongoDB分片集群 前言 文中使用的环境如下 OS:CentOS Linux release 7.5.1804 (Core) Docker:Docker versio ...
 - 开源跨境ERP - 小老板  Docker/Docker Compose一键部署
		
先上部署成功后的截图,各个菜单点击均无报错 DockerCompose 包含: 1. 三个mysql5.7数据库 2. redis php会话存储+ memcached 3. 小老板php主程序 do ...
 - [Docker]compose一键部署nginx
		
Docker-compose部署nginx 创建配置文件 mkdir -p /usr/local/docker/nginx cat > /usr/local/docker/nginx/docke ...
 - 访问redis集群提示连接超时的问题
		
上周在服务器通过docker部署了一个单机版redis集群,今天通过StackExchange.Redis访问的时候报了这个错: 提示我把超时时间设置一下,我去服务器上找到redis的配置文件,发现不 ...
 - Redis 集群使用(2)
		
Redis包含三种集群策略: 主从复制 哨兵模式 redis cluster 主从复制 在主从复制中,数据分为两类:主数据库(master)和 从数据库(slave).其中主从复制有如下特点: 主数据 ...
 
随机推荐
- cloud native
			
什么是原生云(cloud native)应用? 原生云cloud-native应用的定义是:首先,应用系统应该与底层物理基础设施解耦.说白了,应用程序应该与操作系统等基础设施分离,不应该依赖Linux ...
 - jsonarray 循环
			
JSONArray groupList = JSON.parseArray(st1); for (int i=0;i<groupList.size();i++){ JSONObject json ...
 - Linux系统CPU核数等信息查看
			
版权声明:本文为原创文章,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明. https://blog.csdn.net/fgf00/article/details/52584 ...
 - HTTP代理服务器基本知识
			
http://www.cnblogs.com/TankXiao/archive/2012/12/12/2794160.html https://blog.csdn.net/xiaoxiaorenky/ ...
 - bat脚本运行py文件失败(一闪而过)
			
简单记录下问题及原因,方便回顾. 问题 通过 bat 脚本运行 py 文件时,终端一闪而过,没能成功运行. 查证后发现问题出在编码上: 首先检查下bat文件编码格式(推荐 notepad++ ) 打开 ...
 - virtio后端驱动详解
			
2016-10-08 virtIO是一种半虚拟化驱动,广泛用于在XEN平台和KVM虚拟化平台,用于提高客户机IO的效率,事实证明,virtIO极大的提高了VM IO 效率,配备virtIO前后端驱动的 ...
 - ssm之mapper异常   Result Maps collection already contains value for com.ssj.mapper.UserMapper 和 Type interface com.ssj.mapper.UserMapper is already known to the MapperRegistry.
			
异常一:Result Maps collection already contains value for com.ssj.mapper.XXXMapper 原因分析:XXXmapper.xml文件中 ...
 - MyEclipse如何调试
			
我们在MyEclipse中jav添加断点,运行debug as-->open debug Dialog,然后在对话框中选类后--> Run在debug视图下.2.F5键与F6键均为单步调试 ...
 - [转发]SPRING MVC3.2案例讲解--SPRING MVC3的@ResponseBody和ResponseEntity
			
在传统的开发过程中,我们的控制CONTROLL层通常需要转向一个JSP视图:但随着WEB2.0相关技术的崛起,我们很多时候只需要返回数据即可,而不是一个JSP页面. SPRING MVC3的@Resp ...
 - JavaWeb—Tomcat
			
简介 Tomcat 是由 Apache 开发的一个 Servlet 容器,实现了对 Servlet 和 JSP 的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台.安全域管理 ...