docker创建disconf镜像并应用

x33g5p2x  于2021-12-20 转载在 其他  
字(4.2k)|赞(0)|评价(0)|浏览(276)

由于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

  1. redis
    apt-get install redis-server
    service redis-server start
  2. rabbitmq
    apt-get install rabbitmq-server
    service rabbitmq-server start
  3. 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

  1. tomcat
    下载apache-tomcat-7.0.67.tar.gz,解压。配置等difconf一起配置
  2. nginx
    apt-get install nginx
    service nginx start
  3. 部署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
  4. 构建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"]

  1. 创建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

相关文章