zoukankan      html  css  js  c++  java
  • Docker 搭建开源 CMDB平台 “OpsManage” 之 Mariadb

    整理了一下文档  今天来构建mariadb    

                                     

    主机还是 centos  172.16.0.200 构建第二个images 

      直接shell.sh 完成 

    #!/bin/bash
    echo "----------------demo------------------"
    #--------------------new--mysql--dockerfile----------
    if [[ ! -e ./Dockerfile ]]; then
       cat  > ./Dockerfile <<EOF
    FROM docker.io/centos
    MAINTAINER Mrchen  <237356573@qq.com>
    
    ENV DATA_DIR /var/lib/mysql
    
    # Install Mariadb
    RUN yum install -y mariadb mariadb-server 
    RUN yum clean all
    
    ADD mysqld_charset.cnf /etc/my.cnf.d/
    
    COPY scripts /scripts
    RUN chmod +x /scripts/start
    
    EXPOSE 3306
    
    VOLUME ["/var/lib/mysql"]
    CMD ["/bin/bash"]
    ENTRYPOINT ["/scripts/start"]
    EOF
    else
    echo "Docker 已经存在"
    fi
    #---------------new-mysql.config--------------------
    if [[ ! -e ./mysqld_charset.cnf ]]; then
    cat > ./mysqld_charset.cnf <<EOF
    [mysqld]
    character_set_server=utf8
    character_set_filesystem=utf8
    collation-server=utf8_general_ci
    init-connect='SET NAMES utf8'
    init_connect='SET collation_connection = utf8_general_ci'
    EOF
    else
    echo "mysqld.config 已存在!"
    fi
    #--------------new-start脚本---------------------
    if [[ ! -d ./scripts  ]]; then
    mkdir ./scripts && touch ./scripts/firstrun
    cat > ./scripts/start <<EOF
    #!/bin/bash
    
    ROOT_USER=${ROOT_USER:-admin}
    ROOT_PASS=${ROOT_PASS:-237356573}
    #DB  user password
    SQL_DB=${SQL_DB:-opsmanage}
    DB_USER=${DB_USER:-chen}
    DB_PASS=${DB_PASS:-237356573}
    
    MARIADB_NEW=true
    
    
    
    run_maria() {
    
            # First install mariadb
            if [[ ! -d ${DATA_DIR}/mysql ]]; then
                echo "===> MariaDB not install..."
                 echo "===> Initializing maria database... "
               mysql_install_db --user=mysql --ldata=${DATA_DIR}
            echo "===> System databases initialized..."
    
               # Start mariadb
            /usr/bin/mysqld_safe --user mysql > /dev/null 2>&1 &
           
             echo "===> Waiting for MariaDB to start..."
                    STA=1
            while [[ STA -ne 0 ]]; do
                printf "."
                            sleep 3
                            mysql -uroot -e "status" > /dev/null 2>&1
                            STA=$?
                    done
            echo "===> Start OK..."
    
                    # 1. Create a localhost-only admin account
            mysql -u root -e "CREATE USER '$ROOT_USER'@'%' IDENTIFIED BY '$ROOT_PASS'"
          mysql -u root -e "CREATE USER '$ROOT_USER'@'localhost' IDENTIFIED BY '$ROOT_PASS'"
           mysql -u root -e "CREATE USER '$ROOT_USER'@'127.0.0.1' IDENTIFIED BY '$ROOT_PASS'"
           mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO '$DB_USER'@'%' WITH GRANT OPTION"
                    
                    mysql -u root -e "CREATE DATABASE $SQL_DB"
        mysql -u root -e "grant all privileges on $SQL_DB.* TO '$DB_USER'@'%' identified by '$DB_PASS'"  
            echo "===> Create localhost completed..."
    
                    # shutdown mariadb to wait for supervisor
                    mysqladmin -u root shutdown
    
            else
            if [[ -e ${DATA_DIR}/mysql.sock ]]; then
                rm -f ${DATA_DIR}/mysql.sock
            fi
    
            MARIADB_NEW=false
    
                    echo "===> Using an existing volume of MariaDB"
            fi
    }
    
    
    #
    # When Startup Container script
    #
    
    if [[ -e /scripts/firstrun ]]; then
            # config mariadb
            run_maria
            rm /scripts/firstrun
    else
            # Cleanup previous mariadb sockets
            if [[ -e ${DATA_DIR}/mysql.sock ]]; then
                    rm -f ${DATA_DIR}/mysql.sock
            fi
    fi
    
    exec /usr/bin/mysqld_safe
    
    EOF
    else
    echo "Dir scripts 已存在!"
    fi
    echo "----------mkdir----mysql-----DB----------------"
    mkdir -p  /data/mysql
    echo "------------------run_build--Dockerfile-----------------"
    docker build -t python-mariadb:sql-v2  .
    echo "------------------run_docker-Images-Mriadb---------------------------------"
    docker   run  --name python-mariadb-v2   --privileged=true  -v /data/mysql:/var/lib/mysql   -p 3306:3306      -d  python-mariadb:sql-v2

    说明: 该脚本会在当前目录下检测是否有dockerfile 文件 没完创建  后又生成mariadb 配置文件 并开始 build 得mariadb  images  run 启

    重点在start.sh 该脚本内   会copy(scripts 目录)进容器内为 容器启动时运行脚本  初始化 mariadb 并创建 SQL 库   ’opsmanage‘     ‘DBname’    ‘userName’   ’passwordName‘  可以在run容器时  用   -e  参数 传进 环境变量 进行修改

    并可在宿主机  ll   /data/mysql   下查看到 容器是否   有创建opsmanage库    和有没有运行成功!     运行时所生成得   mysql.sock 

    查看一下运行状态:

    连续测试一下:

     

  • 相关阅读:
    【搜索好题】bzoj1501 [NOI2005]智慧珠游戏
    bzoj1854 [Scoi2010]游戏 ([SCOI2010]连续攻击游戏)
    bzoj1412 [ZJOI2009]狼和羊的故事
    LeetCode(22)Generate Parentheses
    LeetCode(11) Container With Most Water
    VS2013环境下Boost库配置
    LeetCode(87) Gray Code
    LeetCode(86) Partition List
    LeetCode(82)Remove Duplicates from Sorted List
    LeetCode(81) Search in Rotated Array II
  • 原文地址:https://www.cnblogs.com/python-diy/p/7684455.html
Copyright © 2011-2022 走看看