Yearning sql審覈平臺docker化佈署

在一個雲主機centos 7上佈署線上環境和開發開發兩套審覈平臺。

1、下載yearning sql安裝文件; 

git clone https://github.com/cookieY/Yearning.git

2、安裝docker,docker-compose;

yum install docker docker-compose -y

3、修改配置文件docker-compose.yml

目錄說明:

db_data:存放mysql數據文件;

docker:存放配置文件

init-sql:存放初始化SQL

#tree
├── db_data /#存放數據文件
├── docker
│   ├── etc
│   │   └── mysql   /#存放數據庫配置文件
│   │       └── my.cnf   
│   ├── logs
│   └── src  /#存放程序配置文件
│       ├── app_dev.js
│       ├── app_prod.js
│       ├── gunicorn_dev.conf
│       ├── gunicorn_prod.conf
│       └── start_yearning.sh
├── docker-compose.yml
└── init-sql /#存放初始化sql腳本
    └── install.sql

docker-compose文件配置:

#cat docker-compose

version: '2'

services:
  db:
    image: mysql:5.7
    volumes:
      - ./docker/etc/mysql/:/etc/mysql/conf.d/
      - ./db_data/:/var/lib/mysql/
      - ./init-sql/:/docker-entrypoint-initdb.d/
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: F4rtC7gR<tQq
      MYSQL_DATABASE: yearning_prod
      MYSQL_USER: yearning
      MYSQL_PASSWORD: yearning
  yearning_dev:
    image: registry.cn-hangzhou.aliyuncs.com/cookie/yearning:v1.3.2
    depends_on: 
      - db
    ports:
      - "9080:80"
      - "9000:8000"
    environment:
      HOST: localhost
      MYSQL_PASSWORD: F4rtC7gR<tQq
      MYSQL_USER: root
      MYSQL_ADDR: db
      MYSQL_DATABASE: yearning_dev
      SERVICE_PORT: 8000
    volumes:
       - ./docker/src/start_yearning.sh:/usr/local/bin/start_yearning.sh
       - ./docker/src/gunicorn_dev.conf:/mnt/src/gunicorn.conf
       - ./docker/src/app_dev.js:/var/lib/nginx/html/static/js/app.13744d427b5104064225.js
  yearning_prod:
    image: registry.cn-hangzhou.aliyuncs.com/cookie/yearning:v1.3.2
    depends_on:
      - db
    ports:
      - "8080:80"
      - "8000:8000"
    environment:
      HOST: localhost
      MYSQL_PASSWORD: F4rtC7gR<tQq
      MYSQL_USER: root
      MYSQL_ADDR: db
      MYSQL_DATABASE: yearning_prod
      SERVICE_PORT: 8000
    volumes:
       - ./docker/src/start_yearning.sh:/usr/local/bin/start_yearning.sh
       - ./docker/src/gunicorn_prod.conf:/mnt/src/gunicorn.conf
       - ./docker/src/app_prod.js:/var/lib/nginx/html/static/js/app.13744d427b5104064225.js

注意事項:

  • 創建數據庫yearning_prod,yearning_dev;
  • 將init-sql的sql導入到以上兩個庫中。

4、啓動docker-compose up -d

Starting yearningdockercompose_db_1 ... done
Recreating yearningdockercompose_yearning_dev_1 ... 
Recreating yearningdockercompose_yearning_dev_1 ... done
Attaching to yearningdockercompose_db_1, yearningdockercompose_yearning_prod_1, yearningdockercompose_yearning_dev_1
db_1             | 2018-10-23T14:03:54.283527Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
db_1             | 2018-10-23T14:03:54.286060Z 0 [Note] mysqld (mysqld 5.7.23) starting as process 1 ...
db_1             | 2018-10-23T14:03:54.290775Z 0 [Note] InnoDB: PUNCH HOLE support available
db_1             | 2018-10-23T14:03:54.290817Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
db_1             | 2018-10-23T14:03:54.290825Z 0 [Note] InnoDB: Uses event mutexes
db_1             | 2018-10-23T14:03:54.290833Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
db_1             | 2018-10-23T14:03:54.290840Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.3
db_1             | 2018-10-23T14:03:54.290847Z 0 [Note] InnoDB: Using Linux native AIO
db_1             | 2018-10-23T14:03:54.291209Z 0 [Note] InnoDB: Number of pools: 1
db_1             | 2018-10-23T14:03:54.291365Z 0 [Note] InnoDB: Using CPU crc32 instructions
db_1             | 2018-10-23T14:03:54.293645Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
db_1             | 2018-10-23T14:03:54.305775Z 0 [Note] InnoDB: Completed initialization of buffer pool
db_1             | 2018-10-23T14:03:54.308258Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
db_1             | 2018-10-23T14:03:54.320987Z 0 [Note] InnoDB: Highest supported file format is Barracuda.
db_1             | 2018-10-23T14:03:54.339834Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables
db_1             | 2018-10-23T14:03:54.339911Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
db_1             | 2018-10-23T14:03:54.417815Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
db_1             | 2018-10-23T14:03:54.418814Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active.
db_1             | 2018-10-23T14:03:54.418834Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active.
db_1             | 2018-10-23T14:03:54.419989Z 0 [Note] InnoDB: Waiting for purge to start
db_1             | 2018-10-23T14:03:54.470171Z 0 [Note] InnoDB: 5.7.23 started; log sequence number 13026725
db_1             | 2018-10-23T14:03:54.470406Z 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
db_1             | 2018-10-23T14:03:54.470659Z 0 [Note] Plugin 'FEDERATED' is disabled.
db_1             | 2018-10-23T14:03:54.474343Z 0 [Note] InnoDB: Buffer pool(s) load completed at 181023 14:03:54
db_1             | 2018-10-23T14:03:54.479744Z 0 [Note] Found ca.pem, server-cert.pem and server-key.pem in data directory. Trying to enable SSL support using them.
db_1             | 2018-10-23T14:03:54.480011Z 0 [Warning] CA certificate ca.pem is self signed.
db_1             | 2018-10-23T14:03:54.482673Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
db_1             | 2018-10-23T14:03:54.482737Z 0 [Note] IPv6 is available.
db_1             | 2018-10-23T14:03:54.482750Z 0 [Note]   - '::' resolves to '::';
db_1             | 2018-10-23T14:03:54.482789Z 0 [Note] Server socket created on IP: '::'.
db_1             | 2018-10-23T14:03:54.486406Z 0 [Warning] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
db_1             | 2018-10-23T14:03:54.496680Z 0 [Note] Event Scheduler: Loaded 0 events
db_1             | 2018-10-23T14:03:54.496960Z 0 [Note] mysqld: ready for connections.
db_1             | Version: '5.7.23'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server (GPL)
yearning_prod_1  | [2018-10-23 22:03:54 +0800] [18] [INFO] Starting gunicorn 19.8.1
yearning_prod_1  | [2018-10-23 22:03:54 +0800] [18] [INFO] Listening at: http://0.0.0.0:8000 (18)
yearning_prod_1  | [2018-10-23 22:03:54 +0800] [18] [INFO] Using worker: sync
yearning_prod_1  | [2018-10-23 22:03:54 +0800] [20] [INFO] Booting worker with pid: 20
yearning_dev_1   | [2018-10-23 22:03:54 +0800] [18] [INFO] Starting gunicorn 19.8.1
yearning_dev_1   | [2018-10-23 22:03:54 +0800] [18] [INFO] Listening at: http://0.0.0.0:8000 (18)
yearning_dev_1   | [2018-10-23 22:03:54 +0800] [18] [INFO] Using worker: sync
yearning_dev_1   | [2018-10-23 22:03:54 +0800] [20] [INFO] Booting worker with pid: 20
yearning_dev_1   | [2018-10-23 22:03:54 +0800] [21] [INFO] Booting worker with pid: 21
yearning_prod_1  | [2018-10-23 22:03:55 +0800] [21] [INFO] Booting worker with pid: 21

5、訪問並配置inception:

(線上)http://x.x.x.x:9080(開發)http://x.x.x.x:8080

在install/inception.tar解壓,配置bin目錄下的inc.cnf文件,分別修改inc_dev.cnf,inc_prod.cnf的配置文件。

[root@izbp18o219vg69uwg7d2dnz inception]# tree
.
├── bin
│   ├── inc.cnf
│   ├── inc_dev.cnf
│   ├── Inception
│   ├── inc_prod.cnf
│   └── mysql
.....
[root@izbp18o219vg69uwg7d2dnz bin]# cat inc_dev.cnf 
[inception]
general_log=1
general_log_file=inception_dev.log
port=7669

socket=/tmp/inc_dev.socket
character-set-client-handshake=0
character-set-server=utf8
inception_support_charset=utf8mb4
inception_enable_nullable=0
inception_check_primary_key=1
inception_check_column_comment=1
inception_check_table_comment=1
inception_enable_blob_type=1
inception_check_column_default_value=1
inception_support_charset=utf8
inception_osc_on=OFF
inception_check_column_default_value=OFF
inception_check_column_comment=OFF
inception_check_table_comment=OFF
inception_enable_identifer_keyword=ON
inception_remote_backup_host = 127.0.0.1
inception_remote_backup_port = 3306
inception_remote_system_user = root
inception_remote_system_password = F4rtC7gR<tQq
inception_max_update_rows = 500000

[root@izbp18o219vg69uwg7d2dnz bin]# cat inc_prod.cnf 
[inception]
general_log=1
general_log_file=inception_prod.log
port=6669

socket=/tmp/inc_prod.socket
character-set-client-handshake=0
character-set-server=utf8
inception_support_charset=utf8mb4
inception_enable_nullable=0
inception_check_primary_key=1
inception_check_column_comment=1
inception_check_table_comment=1
inception_enable_blob_type=1
inception_check_column_default_value=1
inception_support_charset=utf8
inception_osc_on=OFF
inception_check_column_default_value=OFF
inception_check_column_comment=OFF
inception_check_table_comment=OFF
inception_enable_identifer_keyword=ON
inception_remote_backup_host = 127.0.0.1
inception_remote_backup_port = 3306
inception_remote_system_user = root
inception_remote_system_password = F4rtC7gR<tQq
inception_max_update_rows = 500000

啓動inception:

sh Yearning.sh 按1

cat Yearning.sh
# Network
ping -c 1 -W 3 www.baidu.com &> /dev/null
if [ ! $? = 0 ];then
  echo "Cannot be networked"
  exit 1
fi

echo "
-------------------------------------------
                                          |
  1: Restart all Inception services       |
                                          |
-------------------------------------------
"

# Set PATH Variables
export PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/root/bin
BASE_DIR=$(cd "$(dirname "$0")";pwd)

# Set output color
COLUMENS=80
SPACE_COL=$[ $COLUMENS-21 ]
VERSION=`uname -r | awk -F'.' '{print $1}'`
 
RED='\033[1;5;31m'
GREEN='\033[1;32m'
NORMAL='\033[0m'
 
success() {
  REAL_SPACE=$[ $SPACE_COL - ${#1} ]
  for i in `seq 1 $REAL_SPACE`; do
      echo -n " "
  done
  echo -e "[ ${GREEN}SUCCESS${NORMAL} ]"
}

failure() {
  REAL_SPACE=$[ $SPACE_COL - ${#1} ]
  for i in `seq 1 $REAL_SPACE`; do
      echo -n " "
  done
  echo -e "[ ${RED}FAILURE${NORMAL} ]"
  exit 1
}

help() {
  echo "Please enter a valid serial number" 
}


restart() {
  Data="01) Restart Inception"
  echo -n $Data
  netstat -nltp | grep ":6669"|awk '{print $7}'|awk -F "/" '{print $1}' | xargs kill -9 &> /dev/null
  netstat -nltp | grep ":7669"|awk '{print $7}'|awk -F "/" '{print $1}' | xargs kill -9 &> /dev/null
  #ps aux | grep Inception | grep -v grep | awk '{print $2}' | xargs kill -9 &> /dev/null
  nohup $BASE_DIR/install/inception/bin/Inception --defaults-file=$BASE_DIR/install/inception/bin/inc_dev.cnf > $BASE_DIR/logs/inception_dev.log 2>&1 & 
  nohup $BASE_DIR/install/inception/bin/Inception --defaults-file=$BASE_DIR/install/inception/bin/inc_prod.cnf > $BASE_DIR/logs/inception_prod.log 2>&1 &
  if [ $? = 0 ];then
    success "$Data" 
  else
    failure "$Data"
  fi
  sleep 1

}
read -p "Please select enter a valid sequence number: " NUMBER
echo
case "$NUMBER" in
  1)
    restart
    ;;
  *)
    help
    exit 1
esac

6、docker相關操作事項:

1)docker-compose stop 關容器服務

2)docker-compose restart 重啓容器服務

3)docker-compose ps 查看容器服務

4)docker ps docker exec docker exec 查看某一個容器運行時情況

7、nginx配置

在/etc/nginx/conf.d/添加devsql.conf,prodsql.conf兩個文件:

#cat /etc/nginx/conf.d/devsql.conf


# A virtual host using mix of IP-, name-, and port-based configuration
#

server {
#add_header 'Access-Control-Allow-Origin' '*';
#add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept';
#add_header 'Access-Control-Allow-Methods' "GET,POST,PUT,DELETE,OPTIONS";
listen 80;
server_name a1.abc.com;

location / {
proxy_pass http://172.16.0.49:9080;
}
location ~ ^/api {
proxy_pass http://172.16.0.49:9000;
}
}

 

#cat /etc/nginx/conf.d/prodsql.conf


# A virtual host using mix of IP-, name-, and port-based configuration
#

server {
#add_header 'Access-Control-Allow-Origin' '*';
#add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept';
#add_header 'Access-Control-Allow-Methods' "GET,POST,PUT,DELETE,OPTIONS";
listen 80;
server_name a1.abc.com;

location / {
proxy_pass http://172.16.0.49:8080;
}
location ~ ^/api {
proxy_pass http://172.16.0.49:8000;
}
}

#systemctl start nginx

backup_dbname:這個列表示的是當前語句產生的備份信息,存儲在備份服務器的哪個數據庫中,這是一個字符串類型的值,只針對需要備份的語句,數據庫名由IP地址、端口、源數據庫名組成,由下劃線連接,而如果是不需要備份的語句,則返回字符串None。

mysql 數據庫名稱長度不能超過64字符!!!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章