zoukankan      html  css  js  c++  java
  • 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  "33[41;30m正在----Run build-Images-----33[0m"
    docker build -t python-django:opsmanage-v1 .
    #run docker-images
    echo -e  "33[41;30m正在----Docker---Run-Images-----33[0m"
    docker run --name project -p 80:8000 -d python-django:opsmanage-v1
    }
    
    
    echo -e "33[41;30m 正在检查文件 33[0m"
    if [ ! -d "$PROCJECT" ]; then
       echo -e "33[41;30m正在-----git clone https://github.com/welliamcao/OpsManage.git----33[0m"
       yum install wget git -y && 
       git clone https://github.com/welliamcao/OpsManage.git
       echo -e "33[41;30m请先修改modify Redis-host-IP Mysql-host-IP user password db---33[0m"
       echo -e  "33[41;30m文件位置---./OpsManage/OpsManage/settings.py---33[0m"
       echo -e  "33[41;30m 在运行该脚本 33[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)下载地址:

                         

  • 相关阅读:
    P2764 最小路径覆盖问题
    P2598 [ZJOI2009]狼和羊的故事
    P2472 [SCOI2007]蜥蜴
    P2057 [SHOI2007]善意的投票 / [JLOI2010]冠军调查
    P2050 [NOI2012]美食节
    P1345 [USACO5.4]奶牛的电信Telecowmunication
    P1251 餐巾计划问题
    hihocoder 1584 Bounce
    [CF132C] Logo Turtle
    CF1110D Jongmah
  • 原文地址:https://www.cnblogs.com/python-diy/p/7684846.html
Copyright © 2011-2022 走看看