因为要将平台和应用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文件,这里就不贴出来了。
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
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官方镜像及使用说明
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
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
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
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部署及访问正常的方式: