IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Mono、Nginx、Jexus组合测试

    mongod发表于 2016-06-30 15:12:58
    love 0

    因为要将平台和应用Docker化,需要测试并选择部署工具及方式。

    • 页面部署:
      Nginx;Jexus;Jexus独立版;

    • .Net相关(MVC、API、exe)部署:
      Mono + Nginx;Mono + Jexus;Mono + Jexus独立版;

    说明:Jexus独立版是指将Mono的RunTime集成进来的Jexus,据说使用上跟Mono + Jexus差不多。
    接下来新建文件夹:

    sudo mkdir /opt/webapi && cd /opt/webapi
    
    • 点击下载打包好的demo文件;
      文件中的web mvc api文件夹分别用于存放要部署的三类demo文件。

    • 点击下载打包好的Dockerfile和脚本文件;
      文件中的jexus nginx jexus-mono mono-jexus mono-jexus-mono mono-nginx文件夹分别存放了构建镜像的Dockerfile文件和一些构建镜像的脚本以及容器启停的脚本,以免测试过程中总是重复输入一些指令或上下翻找这些重复的指令。

    注意:这些文件夹要放到同一路径下,因为容器的启动脚本中使用了相对路径,这里我放到了新建的文件夹webapi下面,即/opt/webapi路径下。web mvc api文件夹下放的都是要部署的demo文件,这里就不贴出来了。

    jexus

    官方网站

    • Dockerfile

      FROM debian:jessie
      MAINTAINER Mongo <willem@xcloudbiz.com>
      
      RUN apt-get update \
              && apt-get -y install wget \
              && cd /usr \
              && wget linuxdot.net/down/jexus-5.8.1.tar.gz \
              && tar -zxvf jexus-5.8.1.tar.gz \
              && ./jexus-5.8.1/install \
              && rm -r jexus-5.8.1.tar.gz jexus-5.8.1 \
              && apt-get -y autoremove --purge wget \
              && rm -rf /var/lib/apt/lists/*
      
      EXPOSE 80
      WORKDIR /usr/jexus
      CMD  /usr/jexus/jws start && tail -f
      
    • build.sh

      #!/bin/bash
      
      ./stop.sh
      
      docker build -t jexus/debian .
      
      docker rmi $(docker images | awk '$1 == "<none>" && $2 == "<none>" {print $3}')
      
    • start.sh

      #!/bin/bash
      
      ./stop.sh
      
      EXPORT="11110"
      
      docker run -d -p $EXPORT:80 --name jexus-web -v $(pwd)/../web:/var/www/default --restart always jexus/debian:latest
      
      echo
      ip addr show eth1 | awk '$1 == "inet" {split($2,ip,"/");print "Please use the browser to access this address => http://"ip[1]":""'"$EXPORT"'"}'
      echo
      
    • stop.sh

      #!/bin/bash
      
      docker rm -f jexus-web
      

    jexus-mono

    • Dockerfile

      FROM debian:jessie
      MAINTAINER Mongo <willem@xcloudbiz.com>
      
      RUN apt-get update \
              && apt-get -y install wget \
              && cd /usr \
              && wget linuxdot.net/down/jexus-5.8.1-x64.tar.gz \
              && tar -zxvf jexus-5.8.1-x64.tar.gz \
              && rm -r jexus-5.8.1-x64.tar.gz \
              && apt-get -y autoremove --purge wget \
              && rm -rf /var/lib/apt/lists/*
      
      EXPOSE 80
      WORKDIR /usr/jexus
      CMD /usr/jexus/jwss
      
    • build.sh

      #!/bin/bash
      
      ./stop.sh
      
      docker build -t jexus/mono:debian .
      
      docker rmi $(docker images | awk '$1 == "<none>" && $2 == "<none>" {print $3}')
      
    • start.sh

      #!/bin/bash
      
      ./stop.sh
      
      webport="11120"
      mvcport="11122"
      apiport="11124"
      
      docker run -d -p $webport:80 --name jexus-mono-web -v $(pwd)/../web:/var/www/default --restart always jexus/mono:debian
      
      docker run -d -p $mvcport:80 --name jexus-mono-mvc -v $(pwd)/../mvc:/var/www/default --restart always jexus/mono:debian
      
      docker run -d -p $apiport:80 --name jexus-mono-api -v $(pwd)/../api:/var/www/default --restart always jexus/mono:debian
      
      echo
      ip addr show eth1 | awk '$1 == "inet" {split($2,ip,"/");print "(OK)WEB - Please use the browser to access this address => http://"ip[1]":""'"$webport"'"}'
      echo
      ip addr show eth1 | awk '$1 == "inet" {split($2,ip,"/");print "MVC - Please use the browser to access this address => http://"ip[1]":""'"$mvcport"'"}'
      echo
      ip addr show eth1 | awk '$1 == "inet" {split($2,ip,"/");print "API - Please use the browser to access this address => http://"ip[1]":""'"$apiport"'"}'
      echo
      
    • stop.sh

      #!/bin/bash
      
      docker rm -f jexus-mono-web jexus-mono-api jexus-mono-mvc
      

    nginx

    官方网站 ; Nginx中文文档 ; nginx官方镜像及使用说明

    • Dockerfile(官方)

      FROM debian:jessie
      
      MAINTAINER NGINX Docker Maintainers "docker-maint@nginx.com"
      
      ENV NGINX_VERSION 1.11.1-1~jessie
      
      RUN apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 \
          && echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list \
          && apt-get update \
          && apt-get install --no-install-recommends --no-install-suggests -y \
                              ca-certificates \
                              nginx=${NGINX_VERSION} \
                              nginx-module-xslt \
                              nginx-module-geoip \
                              nginx-module-image-filter \
                              nginx-module-perl \
                              nginx-module-njs \
                              gettext-base \
          && rm -rf /var/lib/apt/lists/*
      
      # forward request and error logs to docker log collector
      RUN ln -sf /dev/stdout /var/log/nginx/access.log \
          && ln -sf /dev/stderr /var/log/nginx/error.log
      
      EXPOSE 80 443
      
      CMD ["nginx", "-g", "daemon off;"]
      
    • start.sh

      #!/bin/bash
      
      ./stop.sh
      
      webport="11160"
      
      # OK
      docker run -d -p $webport:80 --name nginx-web -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf -v $(pwd)/../web:/usr/share/nginx/html --restart always nginx:latest
      
      echo " "
      ip addr show eth1 | awk '$1 == "inet" {split($2,ip,"/");print "(OK)WEB - Please use the browser to access this address => http://"ip[1]":""'"$webport"'"}'
      
    • stop.sh

      #!/bin/bash
      
      docker rm -f nginx-web
      

    mono-jexus

    • Dockerfile

      FROM mono:latest
      MAINTAINER Mongo <willem@xcloudbiz.com>
      
      RUN apt-get update \
              && apt-get -y install wget \
              && cd /usr \
              && wget linuxdot.net/down/jexus-5.8.1.tar.gz \
              && tar -zxvf jexus-5.8.1.tar.gz \
              && ./jexus-5.8.1/install \
              && rm -r jexus-5.8.1.tar.gz jexus-5.8.1 \
              && apt-get -y autoremove --purge wget \
              && rm -rf /var/lib/apt/lists/*
      
      EXPOSE 80
      WORKDIR /usr/jexus
      CMD  /usr/jexus/jws start && tail -f
      
    • build.sh

      #!/bin/bash
      
      ./stop.sh
      
      docker build -t mono/jexus .
      
      docker rmi $(docker images | awk '$1 == "<none>" && $2 == "<none>" {print $3}')
      
    • start.sh

      #!/bin/bash
      
      ./stop.sh
      
      mvcport="11132"
      apiport="11134"
      tiport="11136"
      
      docker run -d -p $mvcport:80 --name mono-jexus-mvc -v $(pwd)/../mvc:/var/www/default mono/jexus
      
      docker run -d -p $apiport:80 --name mono-jexus-api -v $(pwd)/../api:/var/www/default mono/jexus
      echo " "
      ip addr show eth1 | awk '$1 == "inet" {split($2,ip,"/");print "MVC - Please use the browser to access this address => http://"ip[1]":""'"$mvcport"'"}'
      echo " "
      ip addr show eth1 | awk '$1 == "inet" {split($2,ip,"/");print "API - Please use the browser to access this address => http://"ip[1]":""'"$apiport"'"}'
      echo " "
      ip addr show eth1 | awk '$1 == "inet" {split($2,ip,"/");print "(OK)MVC-tiMode - Please use the browser to access this address => http://"ip[1]":""'"$tiport"'"}'
      echo " "
      # OK
      docker run --rm -ti -p $tiport:80 --name jexus-mono-mvc-ti -v $(pwd)/../mvc:/var/www/default mono/jexus
      
    • stop.sh

      #!/bin/bash
      
      docker rm -f mono-jexus-mvc mono-jexus-api
      

    mono-jexus-mono

    • Dockerfile

      FROM mono:latest
      MAINTAINER Mongo <willem@xingyuntech.com>
      
      RUN apt-get update \
              && apt-get -y install wget \
              && cd /usr \
              && wget linuxdot.net/down/jexus-5.8.1-x64.tar.gz \
              && tar -zxvf jexus-5.8.1-x64.tar.gz \
              && apt-get -y autoremove --purge wget \
              && rm -rf jexus-5.8.1-x64.tar.gz /var/lib/apt/lists/*
      
      # COPY default /usr/jexus/siteconf/default
      EXPOSE 80
      WORKDIR /usr/jexus
      CMD /usr/jexus/jwss
      
    • build.sh

      #!/bin/bash
      
      ./stop.sh
      
      docker build -t mono/jexus:mono .
      
      docker rmi $(docker images | awk '$1 == "<none>" && $2 == "<none>" {print $3}')
      
    • start.sh

      #!/bin/bash
      
      ./stop.sh
      
      mvcport="11142"
      apiport="11144"
      tiport="11146"
      
      docker run -d -p $mvcport:80 --name mono-jexus-mono-mvc -v $(pwd)/../mvc:/var/www/default mono/jexus:mono
      
      docker run -d -p $apiport:80 --name mono-jexus-mono-api -v $(pwd)/../api:/var/www/default mono/jexus:mono 
      
      echo
      ip addr show eth1 | awk '$1 == "inet" {split($2,ip,"/");print "MVC - Please use the browser to access this address => http://"ip[1]":""'"$mvcport"'"}'
      echo
      ip addr show eth1 | awk '$1 == "inet" {split($2,ip,"/");print "API - Please use the browser to access this address => http://"ip[1]":""'"$apiport"'"}'
      echo
      ip addr show eth1 | awk '$1 == "inet" {split($2,ip,"/");print "tiMode - Please use the browser to access this address => http://"ip[1]":""'"$tiport"'"}'
      echo
      
      docker run --rm -ti -p $tiport:80 -v $(pwd)/../api:/var/www/default mono/jexus:mono
      
    • stop.sh

      #!/bin/bash
      
      docker rm -f mono-jexus-mono-mvc mono-jexus-mono-api
      

    mono-nginx

    • Dockerfile

    • build.sh

    • start.sh

    • stop.sh

    测试结果

    • 镜像大小:

      REPOSITORY       TAG       SIZE        DESCRIPTION
      mono/jexus       latest    637.2 MB    FROM mono,install jexus
      jexus/mono       debian    170.8 MB    FROM debian,install jexus with mono runtime
      jexus/debian     latest    127.2 MB    FROM debian,install jexus
      mono/jexus       mono      674.3 MB    FROM mono,install jexus with mono runtime
      nginx            latest    182.6 MB    FROM debian,install nginx(official)
      mono/nginx       latest    ***.* MB    FROM mono,install nginx
      
    • Web部署及访问正常的方式:
      jexus-mono:debian(-d); nginx:latest(-d);

    • MVC部署及访问正常的方式:
      mono-jexus:latest(-ti);

    • API部署及访问正常的方式:



沪ICP备19023445号-2号
友情链接