Docker 搭建开源 CMDB平台 之 “OpsManage”

            

 说明:  我一次build 完 所以images 包 有1G多   可分层build   bash 环境一层   应用程序及启动脚本(shell.sh) 一层  

 

步骤: 

         1     基础 Images 镜像  sairamnusetty/centos6.8-python2.7.13  

         2    从github  上 git  proect 下来并修改配置文件

        3    运行  install-project.sh  自动下载  git  proect   在次运行  自动构建docker-images  然后  run proect

整个目录文件

 

 

 

 

  install-project.sh  代码如下:   第一次运行检查当下目录是否存在OpsManage 项目文件 如没有自动从github上git 下来 

 

        

#!/bin/bash
#author  Mrchen 237356573@qq.com
PROCJECT="./OpsManage"
DOCKERFILE="./dockerfile"

run_start() {
#run build-project-image
echo -e  "\033[41;30m正在----Run build-Images-----\033[0m"
docker build -t python-django:opsmanage-v1 .
#run docker-images
echo -e  "\033[41;30m正在----Docker---Run-Images-----\033[0m"
docker run --name project -p 80:8000 -d python-django:opsmanage-v1
}


echo -e "\033[41;30m 正在检查文件 \033[0m"
if [ ! -d "$PROCJECT" ]; then
   echo -e "\033[41;30m正在-----git clone https://github.com/welliamcao/OpsManage.git----\033[0m"
   yum install wget git -y && 
   git clone https://github.com/welliamcao/OpsManage.git
   echo -e "\033[41;30m请先修改modify Redis-host-IP Mysql-host-IP user password db---\033[0m"
   echo -e  "\033[41;30m文件位置---./OpsManage/OpsManage/settings.py---\033[0m"
   echo -e  "\033[41;30m 在运行该脚本 \033[0m"
else
	if [[ ! -f "$DOCKERFILE" ]]; then
		cat > ./Dockerfile <<\EOF 
# MAINTAINER        Mrchen <237356573@qq.com>
# DOCKER-VERSION    1.0

FROM sairamnusetty/centos6.8-python2.7.13
  
MAINTAINER The CentOS Project <237356573.qq.com> 

RUN yum install  wget  gcc -y
RUN wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo 
RUN yum clean all 
RUN yum install epel-release -y 
RUN yum repolist 

#install django-base-server
RUN yum install zlib zlib-devel readline-devel sqlite-devel bzip2-devel openssl-devel gdbm-devel libdbi-devel ncurses-libs kernel-devel libxslt-devel libffi-devel python-devel mysql-devel zlib-devel mysql-server sshpass gcc wget git openssl-devel -y

#install python-django-pip-base
COPY ./requirements.txt  /mnt 
RUN pip install -r /mnt/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/


#mount proect OpsManage

VOLUME ["/mnt/OpsManage"]

COPY  OpsManage  /mnt 

#run .sh .py

COPY  ./loading-mariadb.sh   /mnt

COPY  ./start-proect.sh   /mnt

#开放8000端口
EXPOSE  8000

#load data
RUN chmod +x /mnt/start-proect.sh
#ENTRYPOINT ["/mnt/start-proect.sh"]
CMD ["/mnt/start-proect.sh"]

EOF

echo -e "new pip config"

cat >  ./requirements.txt  <<\EOF
django==1.8.17
Celery==3.1.20
django-celery
celery-with-redis
djangorestframework==3.5.3
paramiko
ansible==2.2.2
redis
xlrd
supervisor
MySQL-python
DBUtils
EOF

cat > ./start-proect.sh <<\EOF
#!/bin/bash
#237356573
OPS_DIR=/mnt

#--------------RUN---Opsmange---------------------------
if [[ ! -d  ${OPS_DIR}/OpsManage ]];then
echo "not proectj-DIR "
else
cd ${OPS_DIR}/OpsManage
python ${OPS_DIR}/manage.py migrate
STR=$?
if [[ ! STR -ne 0 ]];then
chmod +x /mnt/loading-mariadb.sh 
bash  /mnt/loading-mariadb.sh
sleep 1
python ${OPS_DIR}/manage.py runserver 0.0.0.0:8000
else
echo "----------------mysql----loading-----ERROR-------"
fi
fi
EOF



#---------------------------RUN----------------------------------
echo -e  "...new--all--files..................."
read -r -p "ls it running?[Y/n]" PROECT
case $PROECT in
   [yY][eE][sS]|[yY])
              run_start
        ;;
   [nN][oO]|[nN])
   echo "-----exit-----"
   exit
        ;;
esac
else
read -r -p "all files exis ls it running?[Y/n]" PROECT
case $PROECT in
   [yY][eE][sS]|[yY])
              run_start
       ;;
   [nN][oO]|[nN])
   echo "-----exit-----"
   exit
       ;;
esac
fi
fi

运行:   bash ./install-project.sh

        

 

vim ./OpsManage/OpsManage/settings.py   修改  redis  mariadb 及 port    我们修改为  172.16.0.200  

 

 

 mariadb 我们修改为:

 

 

修改完我们在来看一下  loading-mariadb.sh   该文件为启动时修改python-django  登陆时帐号及密码:

 

在次运行  bash ./install-project.sh

 

    坐等 查看:

 

 

 

 访问 172.16.0.220   user:  chen   password : admin

 

 

 

          images 打包    docker save   e5c4cfc89496 > /mnt/opsmanage.ims

         images   loading进本地  仓库   docker load  <  /mnt/opsmanage.ims

         Tag          docker tag   e5c4cfc89496  python-django_opsmanage_v1

         push 到私有仓库  docker push 172.16.0.230:5000/python-django_opsmanage_v1

         还可以写个   compose  在加  swarm集群 也是我接下去要研究学习  还有 k8s  哦!

         container   (redis,mariadb,Opsmanages)下载地址:

                     

 

posted @ 2017-10-20 01:18  coding_python  阅读(2032)  评论(0编辑  收藏  举报