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

时间: 2024-08-29 08:15:46

Docker-Compose一键部署Ningx+.Net Core+Redis集群的相关文章

Docker Compose 一键部署Nginx代理Tomcat集群

Docker Compose 一键部署Nginx代理Tomcat集群 目录结构 [[email protected] ~]# tree compose_nginx_tomcat/ compose_nginx_tomcat/ ├── docker-compose.yml ├── mysql │   ├── conf │   │   └── my.cnf │   └── data ├── nginx │   ├── Dockerfile │   ├── nginx-1.12.1.tar.gz │  

Docker compose 一键部署LNMP平台

docker-compose.yml version: '3' services: nginx: hostname: nginx build: context: ./nginx dockerfile: Dockerfile ports: - 80:80 links: - php:php-cgi volumes: - ./wwwroot:/usr/local/nginx/html php: hostname: php build: ./php links: - mysql:mysql-db vol

linux8 redis集群槽+docker

docker pull hello-world #不能推送,要把名字改一下 错误1 : 私有仓库搭建: 刚开始 : 报错: server gave http response to https client #只支持https的格式,不支持http的,要改一下http的 改一下 : vim /etc/docker/daemon.json 2.写入如下信息,地址改成你自己的ip {"registry-mirrors": ["http://f1361db2.m.daocloud.

docker实验--redis集群搭建

背景介绍: 我经常在做一些小项目的时候,采用了Redis来做缓存,但是都是基于单节点的,一旦redis挂了,整个项目就挂了.于是乎,想到了多节点集群的方式来使用,就开始折腾着怎么去搭建这个集群.在网上参考了一些大佬的做法以后,发现使用的ruby脚本已经过时了,所以就基于他们的方法做了一定的更新,如果有误,欢迎批评指正. 环境准备: centOS7,Docker,redis-cli 要点: a.Redis集群至少需要3个节点(笔者认为最好是部署奇数个节点),因为投票容错机制要求超过一半的节点认为某

用 Docker 构建分布式 Redis 集群

本文介绍了如何使用Docker搭建Redis集群,很多读者都在问Docker能带来哪些实质性的好处,我想本文就是一个很好的例子.不使用Docker你也可以搭建Redis集群,那使用Docker后会有怎么样的优势了?我想可以用两个词总结:快速和复用. 我们经常会遇到这样一个问题:当我们想进行一个完整的测试的时候,往往缺少硬件或者其它资源.为了满足需求,我可能需要三台服务,或者说三个虚拟机.但是我发现我们没有时间来创建它们,并且如果要物理机的话我们也没有那么多资源.这也是为什么我对Docker如此感

用Docker构建分布式Redis集群

[编者的话]本文介绍了如何使用Docker搭建Redis集群,很多读者都在问Docker能带来哪些实质性的好处,我想本文就是一个很好的例子.不使用Docker你也可以搭建Redis集群,那使用Docker后会有怎么样的优势了?我想可以用两个词总结:快速和复用. 海量技术文章:http://tieba.yunxunmi.com/ 云搜 http://so.yunxunmi.com/ 让搜索更简单 采用html5完全支持手机和PC 我们经常会遇到这样一个问题:当我们想进行一个完整的测试的时候,往往缺

Docker化高可用redis集群

最近遇到部分系统因为redis服务挂掉,导致部分服务不可用.所以希望搭建一个redis集群镜像,把原先散落各处的redis服务器统一管理起来,并且保障高可用和故障自动迁移. 一:redis集群分类 大家都知道redis集群有两种,一种是redis sentinel,高可用集群,同时只有一个master,各实例数据保持一致:一种是redis cluster,分布式集群,同时有多个master,数据分片部署在各个master上.基于我们的需求和redis本身技术的成熟度,本次要搭建的是redis s

redis集群部署配置

Redis集群部署配置 测试环境:服务器系统为centos6.5,redis版本为3.2.2,使用一台机器,模拟6个redis实例来创建redis集群,其中3主3从 分别建立redis的安装目录,并复制redis.conf到安装目录下. 2.修改每个目录下的redis.conf配置文件 port 7000   #端口 daemonize yes cluster-enabled yes   #开启集群模式 cluster-config-file nodes-7000.conf  #集群配置文件 c

Redis集群部署文档(Ubuntu15.10系统)

Redis集群部署文档(Ubuntu15.10系统)(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下)127.0.0.1:7000127.0.0.1:7001127.0.0.1:7002127.0.0.1:7003127.0.0.1:7004127.0.0.1:7005 1:下载redis.官网下载3.0.0版本,之前2.几的版本不支持集群模式下载地址:http://download.redis