基于docker的应用服务部署

docker部署一个服务将会有多种方式,本文将一步步介绍。
  • 创建应用镜像(简单的取队列发邮箱的项目,见:https://github.com/JThink/SkyEye/tree/master/skyeye-alarm)
    • Dockerfile
# build the base image: jdk
# this is the docker file, use the ubuntu 14.04-jdk7
# VERSION 1
# Author: jthink

# the basic image
FROM 192.168.xx.xx:5000/ubuntu:14.04-jdk7
# maintainer
MAINTAINER jthink [email protected]
# copy the file
RUN mkdir -p /home/deploy
RUN mkdir -p /opt/xxx/xxx-config/monitor-center/bane
ADD ./bane-0.1.0.tar /home/deploy
ADD ./bane.properties /opt/xxx/xxx-config/monitor-center/bane
COPY run.sh /run.sh
RUN chmod +x /run.sh
# CMD to start
CMD ["/run.sh"]
               使用基础的ubuntu 14.04-jdk7基础镜像,里面包含jdk1.7_79的jdk,在上一篇文章中介绍的基础镜像创建(见: http://blog.csdn.net/jthink_/article/details/70229278)
               容器中创建相应的文件夹,部署:/home/deploy;配置文件:/opt/xxx/xxx-config/monitor-center/bane
               拷贝相应的部署包、配置文件和执行脚本
               关于配置文件是否应该copy,如果项目中使用了配置中心,那么就不需要这一步骤,很方便,市面上的配置中心项目(百度的disconf,携程的apollo)
    • 执行脚本run.sh
#!/bin/bash

cd /home/deploy/bane-0.1.0
source /etc/profile.d/java.sh
nohup bin/bane &
tail -f /opt/xxx/xxx-config/monitor-center/bane /bane.properties
    • 上传镜像到私有仓库
      sudo docker build -t 192.168.xx.xx:5000/monitor-center_bane:0.1.0 .
      sudo docker push 192.168.xx.xx:5000/monitor-center_bane:0.1.0
  • 应用部署
    • 简单部署
      • sudo docker run -d --name bane 192.168.88.73:5000/monitor-center_bane:0.1.0
      • 日志挂载部署
        镜像内的应用日志处理一般是输出到标准输出,然后再用flume或者其他工具来收集(因为以后使用集群的方式来部署,根本不知道这个应用部署在docker的哪台几点上),这个以后介绍,主要用的是SkyEye这个项目,github地址:https://github.com/JThink/SkyEye
        我们这里使用简单的方式将日志挂在到宿主机
        sudo docker run -d --name bane -v /home/xxx/docker/image/bane/logs:/home/deploy/logs 192.168.xx.xx:5000/monitor-center_bane:0.1.0
    • swarm集群部署
      这样的部署能够动态的部署多个实例(好处可以研究下docker swarm模式)
      • docker service create --with-registry-auth --replicas 3 --name bane --update-delay 10s 192.168.xx.xx:5000/monitor-center_bane:0.1.0
        docker service ps bane
        可以看到bane这个项目在集群中部署了3个实例
      • 日志挂载部署
        和上面一样,将应用实例的日志挂载到宿主机
        docker service create --with-registry-auth --replicas 3 --name bane --update-delay 10s --mount type=bind,source=/tmp/logs/bane,destination=/home/deploy/logs 192.168.xx.xx:5000/monitor-center_bane:0.1.0
        宿主机上的目录要自己建


        如果服务特别多,一组服务提供一个应用,那么我们需要用容器的编排工具来进行部署,以后再介绍

你可能感兴趣的:(docker,监控报警)