docker创建disconf镜像并应用

来源:互联网 发布:中国和朝鲜的关系知乎 编辑:程序博客网 时间:2024/05/22 15:55
由于disconf的环境比较复杂,不适合使用dockerfile的方式进行创建,我们使用commit的方式进行创建。
  1. 启动容器
    选择一个ubuntu:14.04的基础镜像,进入镜像(sudo docker run -ti -d image /bin/bash   然后用docker-enter进入容器)首先修改软件源为本地的或者国内的,这样下载比较快。
    在/etc/apt/sources.list中修改,具体省略
    修改时区
    echo "Asia/Shanghai" > /etc/timezone
    dpkg-reconfigure -f noninteractive tzdata
  2. 软件列表
    使用disconf需要基本的软件如下:
    jdk、mysql、redis、zookeeper、tomcat、rabbitmq、nginx,接下去一次介绍如何安装
    由于mysql需要去查看,放在容器内部不太方便(当然尽量将一个服务的软件都放入容器中进行沙盒隔离),我们这里使用外部可ping-pong的mysql
  3. jdk
    根据我们公司统一要求安装jdk1.7.0_75,将jar包拷贝至/usr/local/xxx然后解压,vi /etc/profile 在最后加上如下环境设置
    # set java environment
    export PATH=/usr/local/bin:$PATH;
    export JDK_HOME=/usr/local/xxx/jdk1.7.0_75
    export JAVA_HOME=$JDK_HOME
    export JRE_HOME=$JDK_HOME/jre
    export CLASSPATH=$CLASSPATH:.:$JDK_HOME/lib:$JDK_HOME/jre/lib
    export PATH=$JDK_HOME/bin:$PATH;
    source /etc/profile
    java -version就可以看到java的版本
    该jdk镜像需要经常使用,所以提交一个版本到本地私有仓库,方便以后使用
    sudo docker commit -m 'add the jdk_1.7.0_75' -a 'jthink' fba497eecca1 ip:5000/ubuntu:14.04-jdk_1.7.0_75
    sudo docker push ip:5000/ubuntu:14.04-jdk_1.7.0_75
  4. redis
    apt-get install redis-server
    service redis-server start
  5. rabbitmq
    apt-get install rabbitmq-server
    service rabbitmq-server start
  6. zookeeper
    zookeeper我们采用3个节点的方式进行部署(同一个容器中启动3个实例)
    下载zookeeper-3.4.6.tar.gz,解压成3份,分别为zookeeper-3.4.6_1、zookeeper-3.4.6_2、zookeeper-3.4.6_3,同时创建data和log文件夹保存数据和日志,这2个文件夹中都新建zoo1、zoo2、zoo3文件夹,data中的zoo1创建myid,内容为1;data中的zoo2创建myid,内容为2;data中的zoo3创建myid,内容为3;
    在zookeeper的conf目录下新建zoo.cfg,内容分别为:
    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/home/soft/zookeeper/data/zoo1
    dataLogDir=/home/soft/zookeeper/log/zoo1
    clientPort=2181
    server.1=localhost:2287:3387
    server.2=localhost:2288:3388
    server.3=localhost:2289:3389

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/home/soft/zookeeper/data/zoo2
    dataLogDir=/home/soft/zookeeper/log/zoo2
    clientPort=2182
    server.1=localhost:2287:3387
    server.2=localhost:2288:3388
    server.3=localhost:2289:3389

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/home/soft/zookeeper/data/zoo3
    dataLogDir=/home/soft/zookeeper/log/zoo3
    clientPort=2183
    server.1=localhost:2287:3387
    server.2=localhost:2288:3388
    server.3=localhost:2289:3389
    然后进bin启动,./zkServer.sh start
  7. tomcat
    下载apache-tomcat-7.0.67.tar.gz,解压。配置等difconf一起配置
  8. nginx
    apt-get install nginx
    service nginx start
  9. 部署disconf
    详细参见之前的博客http://blog.csdn.net/jthink_/article/details/50538829
    在宿主机上创建disconf/conf以及disconf/src文件夹分别存放配置文件以及源码,便于拷贝至容器(源码和配置会发生修改,所以将可变的配置和代码放置在宿主机上)。
    注意:制作完该镜像记得提交到私有仓库,便于使用
    sudo docker commit -m 'add the nginx' -a 'jthink' fba497eecca1 ip:5000/ubuntu:14.04-disconf
    sudo docker push ip:5000/ubuntu:14.04-disconf
  10. 构建disconf容器并启动
    打包disconf需要安装如下软件
    apt-get install python
    安装maven
    下载apache-maven-3.0.5-bin.tar.gz
    解压(删除conf下的settings.xml,使用宿主机拷贝的配置)设置环境变量到/etc/profile
    # set maven environment
    export M2_HOME=/home/soft/apache-maven-3.0.5
    export M2=$M2_HOME/bin
    export PATH=$M2:$PATH
    1. 创建dockerfile
      # this is the docker file, use the ubuntu 14.04-disconf
      # VERSION 1
      # Author: jthink
      # Command format: xxx xxx

      # the basic image, must
      FROM ip:5000/ubuntu:14.04-disconf
      # maintainer
      MAINTAINER jthink qianjc@unionpaysmart.com
      # copy the file
      COPY settings.xml /home/soft/apache-maven-3.0.5/conf
      COPY redis2.conf /home
      COPY ./conf/application.properties /usr/local/xxx/disconf/source
      COPY ./conf/jdbc-mysql.properties /usr/local/xxx/disconf/source
      COPY ./conf/log4j.properties /usr/local/xxx/disconf/source
      COPY ./conf/logback.xml /usr/local/xxx/disconf/source
      COPY ./conf/rabbit.properties /usr/local/xxx/disconf/source
      COPY ./conf/redis-config.properties /usr/local/xxx/disconf/source
      COPY ./conf/zoo.properties /usr/local/xxx/disconf/source
      COPY ./src/disconf /home/src
      COPY run.sh /run.sh
      # expose the port
      EXPOSE 8991
      # CMD to start
      CMD ["/run.sh"]
    2. 创建run.sh
      #!/bin/bash

      # build the disconf
      cd /home/src/disconf-web
      source /etc/profile
      sh deploy/deploy.sh
      # start the redis-server
      /usr/bin/redis-server /etc/redis/redis.conf
      /usr/bin/redis-server /home/redis2.conf
      # start the zookeeper
      bash /home/soft/zookeeper/zookeeper-3.4.6_1/bin/zkServer.sh start
      bash /home/soft/zookeeper/zookeeper-3.4.6_2/bin/zkServer.sh start
      bash /home/soft/zookeeper/zookeeper-3.4.6_3/bin/zkServer.sh start
      # start the tomcat
      bash /home/soft/apache-tomcat-7.0.67/bin/startup.sh
      # start rabbitmq, not use
      # service rabbitmq-server start
      # start the nginx
      service nginx start
      /usr/sbin/sshd -D

      构建和启动
      sudo docker build -t ip:5000/ubuntu:14.04-disconf-r /home/xxx/xxx/docker/images/disconf
      sudo docker run -d -p 8991:8991 --name disconf-r ip:5000/ubuntu:14.04-disconf-r bash /run.sh
0 0
原创粉丝点击