python之自動化部署SpringCloud,且脫離python環境運行

文件結構如上圖

刪除鏡像

import re
from 連接linux主機 import Host


def delete_images():
    host117 = Host('172.17.20.117', 'root', '123456')
    host118 = Host('172.17.20.118', 'root', 'qweqaz123')
    host120 = Host('172.17.20.120', 'root', '123456')
    host121 = Host('172.17.20.121', 'root', '123456')

    # 1.移除117:docker service 服務

    run_once01 = host117.run_once('docker service ls')
    service_id_config_list = re.findall('(\\S{12})\\s{8}config', run_once01)
    if len(service_id_config_list) > 0:
        service_rm_info = host117.run_once('docker service rm %s' % service_id_config_list[0])
        print('service config移除情況:' + service_rm_info + '\n')
    service_id_sys_list = re.findall('(\\S{12})\\s{8}rz-sys', run_once01)
    if len(service_id_sys_list) > 0:
        service_sys_info = host117.run_once('docker service rm %s' % service_id_sys_list[0])
        print('service sys移除情況' + service_sys_info + '\n')
    service_id_base_list = re.findall('(\\S{12})\\s{8}rz-base-info', run_once01)
    if len(service_id_base_list) > 0:
        service_base_info = host117.run_once('docker service rm %s' % service_id_base_list[0])
        print('service base移除情況:' + service_base_info + '\n')
    service_id_api_list = re.findall('(\\S{12})\\s{8}rz-api-sh', run_once01)
    if len(service_id_api_list) > 0:
        service_api_info = host117.run_once('docker service rm %s' % service_id_api_list[0])
        print('service api 移除情況:' + service_api_info + '\n')

    # 2.停止121:web-admin 服務--移除web-admin服務

    run_once02 = host121.run_once('docker ps')
    ps_id_web_list = re.findall('(\\S{12})\\s{8}172.17.20.117:5000/rz-web-admin', run_once02)
    if len(ps_id_web_list) > 0:
        for i in range(0, len(ps_id_web_list)):
            ps_stop_web_info = host121.run_once('docker stop %s' % ps_id_web_list[i])
            ps_rm_web_info = host121.run_once('docker rm %s' % ps_id_web_list[i])
            print('ps web容器移除情況:' + ps_rm_web_info + '\n')
    # 3.停止118:eureka 服務

    run_once03 = host118.run_once('docker ps')
    ps_id_eureka_list = re.findall('(\\S{12})\\s{8}172.17.20.117:5000/rz-eureka', run_once03)
    if len(ps_id_eureka_list) > 0:
        for i in range(0, len(ps_id_eureka_list)):
            ps_stop_eureka_info = host118.run_once('docker stop %s' % ps_id_eureka_list[i])
            print('ps eureka 容器停止情況:' + ps_stop_eureka_info + '\n')
    # 4.移除容器
    run_once04 = host121.run_once('docker ps -a')
    ps_a_id_config_list = re.findall('(\\S{12})\\s{8}172.17.20.117:5000/rz-config', run_once04)
    ps_a_id_sys_list = re.findall('(\\S{12})\\s{8}172.17.20.117:5000/rz-sys', run_once04)
    ps_a_id_base_list = re.findall('(\\S{12})\\s{8}172.17.20.117:5000/rz-base-info', run_once04)
    ps_a_id_api_list = re.findall('(\\S{12})\\s{8}172.17.20.117:5000/rz-api-sh', run_once04)
    ps_a_id_web_list = re.findall('(\\S{12})\\s{8}172.17.20.117:5000/rz-web-admin', run_once04)
    if len(ps_a_id_config_list) > 0:
        for i in range(0, len(ps_a_id_config_list)):
            host121.run_once('docker rm %s' % ps_a_id_config_list[i])
            print('移除容器121config:' + str(i))
    if len(ps_a_id_sys_list) > 0:
        for i in range(0, len(ps_a_id_sys_list)):
            host121.run_once('docker rm %s' % ps_a_id_sys_list[i])
            print('移除容器121config:' + str(i))
    if len(ps_a_id_base_list) > 0:
        for i in range(0, len(ps_a_id_base_list)):
            host121.run_once('docker rm %s' % ps_a_id_base_list[i])
            print('移除容器121config:' + str(i))
    if len(ps_a_id_api_list) > 0:
        for i in range(0, len(ps_a_id_api_list)):
            host121.run_once('docker rm %s' % ps_a_id_api_list[i])
            print('移除容器121config:' + str(i))
    if len(ps_a_id_web_list) > 0:
        for i in range(0, len(ps_a_id_web_list)):
            host121.run_once('docker rm %s' % ps_a_id_web_list[i])
            print('移除容器121config:' + str(i))

    run_once041 = host120.run_once('docker ps -a')
    ps_a_id_config_list1 = re.findall('(\\S{12})\\s{8}172.17.20.117:5000/rz-config', run_once041)
    ps_a_id_sys_list1 = re.findall('(\\S{12})\\s{8}172.17.20.117:5000/rz-sys', run_once041)
    ps_a_id_base_list1 = re.findall('(\\S{12})\\s{8}172.17.20.117:5000/rz-base-info', run_once041)
    ps_a_id_api_list1 = re.findall('(\\S{12})\\s{8}172.17.20.117:5000/rz-api-sh', run_once041)
    ps_a_id_web_list1 = re.findall('(\\S{12})\\s{8}172.17.20.117:5000/rz-web-admin', run_once041)
    if len(ps_a_id_config_list1) > 0:
        for i in range(0, len(ps_a_id_config_list1)):
            host120.run_once('docker rm %s' % ps_a_id_config_list1[i])
            print('移除容器121config:' + str(i))
    if len(ps_a_id_sys_list1) > 0:
        for i in range(0, len(ps_a_id_sys_list1)):
            host120.run_once('docker rm %s' % ps_a_id_sys_list1[i])
            print('移除容器121config:' + str(i))
    if len(ps_a_id_base_list1) > 0:
        for i in range(0, len(ps_a_id_base_list1)):
            host120.run_once('docker rm %s' % ps_a_id_base_list1[i])
            print('移除容器121config:' + str(i))
    if len(ps_a_id_api_list1) > 0:
        for i in range(0, len(ps_a_id_api_list1)):
            host120.run_once('docker rm %s' % ps_a_id_api_list1[i])
            print('移除容器121config:' + str(i))
    if len(ps_a_id_web_list1) > 0:
        for i in range(0, len(ps_a_id_web_list1)):
            host120.run_once('docker rm %s' % ps_a_id_web_list1[i])
            print('移除容器121config:' + str(i))

    run_once042 = host118.run_once('docker ps -a')
    ps_a_id_config_list2 = re.findall('(\\S{12})\\s{8}172.17.20.117:5000/rz-config', run_once042)
    ps_a_id_sys_list2 = re.findall('(\\S{12})\\s{8}172.17.20.117:5000/rz-sys', run_once042)
    ps_a_id_base_list2 = re.findall('(\\S{12})\\s{8}172.17.20.117:5000/rz-base-info', run_once042)
    ps_a_id_api_list2 = re.findall('(\\S{12})\\s{8}172.17.20.117:5000/rz-api-sh', run_once042)
    ps_a_id_web_list2 = re.findall('(\\S{12})\\s{8}172.17.20.117:5000/rz-web-admin', run_once042)
    if len(ps_a_id_config_list2) > 0:
        for i in range(0, len(ps_a_id_config_list2)):
            host118.run_once('docker rm %s' % ps_a_id_config_list2[i])
            print('移除容器121config:' + str(i))
    if len(ps_a_id_sys_list2) > 0:
        for i in range(0, len(ps_a_id_sys_list2)):
            host118.run_once('docker rm %s' % ps_a_id_sys_list2[i])
            print('移除容器121config:' + str(i))
    if len(ps_a_id_base_list2) > 0:
        for i in range(0, len(ps_a_id_base_list2)):
            host118.run_once('docker rm %s' % ps_a_id_base_list2[i])
            print('移除容器121config:' + str(i))
    if len(ps_a_id_api_list2) > 0:
        for i in range(0, len(ps_a_id_api_list2)):
            host118.run_once('docker rm %s' % ps_a_id_api_list2[i])
            print('移除容器121config:' + str(i))
    if len(ps_a_id_web_list2) > 0:
        for i in range(0, len(ps_a_id_web_list2)):
            host118.run_once('docker rm %s' % ps_a_id_web_list2[i])
            print('移除容器121config:' + str(i))

    # 5.移除121、120、118鏡像

    run_once05 = host121.run_once('docker images')
    images_id_config_list = re.findall('172.17.20.117:5000/rz-config\\s{2,10}\\S{6}\\s{14}(\\S{12})', run_once05)
    images_id_sys_list = re.findall('172.17.20.117:5000/rz-sys\\s{2,10}\\S{6}\\s{14}(\\S{12})', run_once05)
    images_id_base_list = re.findall('172.17.20.117:5000/rz-base-info\\s{2,10}\\S{6}\\s{14}(\\S{12})', run_once05)
    images_id_api_list = re.findall('172.17.20.117:5000/rz-api-sh\\s{2,10}\\S{6}\\s{14}(\\S{12})', run_once05)
    images_id_web_list = re.findall('172.17.20.117:5000/rz-web-admin\\s{2,10}\\S{6}\\s{14}(\\S{12})', run_once05)
    if len(images_id_config_list) > 0:
        for i in range(0, len(images_id_config_list)):
            host121.run_once('docker rmi %s' % images_id_config_list[i])
            print('移除鏡像121config:' + str(i))
    if len(images_id_sys_list) > 0:
        for i in range(0, len(images_id_sys_list)):
            host121.run_once('docker rmi %s' % images_id_sys_list[i])
            print('移除鏡像121sys' + str(i))
    if len(images_id_base_list) > 0:
        for i in range(0, len(images_id_base_list)):
            host121.run_once('docker rmi %s' % images_id_base_list[i])
            print('移除鏡像121base' + str(i))
    if len(images_id_api_list) > 0:
        for i in range(0, len(images_id_api_list)):
            host121.run_once('docker rmi %s' % images_id_api_list[i])
            print('移除鏡像121api' + str(i))
    if len(images_id_web_list) > 0:
        for i in range(0, len(images_id_web_list)):
            host121.run_once('docker rmi %s' % images_id_web_list[i])
            print('移除鏡像121web' + str(i))

    run_once051 = host120.run_once('docker images')
    images_id_config_list1 = re.findall('172.17.20.117:5000/rz-config\\s{2,10}\\S{6}\\s{14}(\\S{12})', run_once051)
    images_id_sys_list1 = re.findall('172.17.20.117:5000/rz-sys\\s{2,10}\\S{6}\\s{14}(\\S{12})', run_once051)
    images_id_base_list1 = re.findall('172.17.20.117:5000/rz-base-info\\s{2,10}\\S{6}\\s{14}(\\S{12})', run_once051)
    images_id_api_list1 = re.findall('172.17.20.117:5000/rz-api-sh\\s{2,10}\\S{6}\\s{14}(\\S{12})', run_once051)
    images_id_web_list1 = re.findall('172.17.20.117:5000/rz-web-admin\\s{2,10}\\S{6}\\s{14}(\\S{12})', run_once051)
    if len(images_id_config_list1) > 0:
        for i in range(0, len(images_id_config_list1)):
            host120.run_once('docker rmi %s' % images_id_config_list1[i])
            print('移除鏡像120config' + str(i))
    if len(images_id_sys_list1) > 0:
        for i in range(0, len(images_id_sys_list1)):
            host120.run_once('docker rmi %s' % images_id_sys_list1[i])
            print('移除鏡像120sys' + str(i))
    if len(images_id_base_list1) > 0:
        for i in range(0, len(images_id_base_list1)):
            host120.run_once('docker rmi %s' % images_id_base_list1[i])
            print('移除鏡像120base' + str(i))
    if len(images_id_api_list1) > 0:
        for i in range(0, len(images_id_api_list1)):
            host120.run_once('docker rmi %s' % images_id_api_list1[i])
            print('移除鏡像120api' + str(i))
    if len(images_id_web_list1) > 0:
        for i in range(0, len(images_id_web_list1)):
            host120.run_once('docker rmi %s' % images_id_web_list1[i])
            print('移除鏡像120web' + str(i))

    run_once052 = host118.run_once('docker images')
    images_id_config_list2 = re.findall('172.17.20.117:5000/rz-config\\s{2,10}\\S{6}\\s{14}(\\S{12})', run_once052)
    images_id_sys_list2 = re.findall('172.17.20.117:5000/rz-sys\\s{2,10}\\S{6}\\s{14}(\\S{12})', run_once052)
    images_id_base_list2 = re.findall('172.17.20.117:5000/rz-base-info\\s{2,10}\\S{6}\\s{14}(\\S{12})', run_once052)
    images_id_api_list2 = re.findall('172.17.20.117:5000/rz-api-sh\\s{2,10}\\S{6}\\s{14}(\\S{12})', run_once052)
    images_id_web_list2 = re.findall('172.17.20.117:5000/rz-web-admin\\s{2,10}\\S{6}\\s{14}(\\S{12})', run_once052)
    if len(images_id_config_list2) > 0:
        for i in range(0, len(images_id_config_list2)):
            host118.run_once('docker rmi %s' % images_id_config_list2[i])
            print('移除鏡像118config' + str(i))
    if len(images_id_sys_list2) > 0:
        for i in range(0, len(images_id_sys_list2)):
            host118.run_once('docker rmi %s' % images_id_sys_list2[i])
            print('移除鏡像118sys' + str(i))
    if len(images_id_base_list2) > 0:
        for i in range(0, len(images_id_base_list2)):
            host118.run_once('docker rmi %s' % images_id_base_list2[i])
            print('移除鏡像118base' + str(i))
    if len(images_id_api_list2) > 0:
        for i in range(0, len(images_id_api_list2)):
            host118.run_once('docker rmi %s' % images_id_api_list2[i])
            print('移除鏡像118api' + str(i))
    if len(images_id_web_list2) > 0:
        for i in range(0, len(images_id_web_list2)):
            host118.run_once('docker rmi %s' % images_id_web_list2[i])
            print('移除鏡像118web' + str(i))
    print('*' * 50 + "刪除完成" + '*' * 50)

上傳文件

from 連接linux主機 import Host


def upload():
    host = Host('172.17.20.117', 'root', '123456')

    local_path_api = r'C:\Users\nijiajin\Desktop\cshop\rz-api-sh\target\rz-api-sh-0.0.1.jar'
    remote_path_api = '/home/docker/gkzy/rz-api-sh/'

    local_path_base = r'C:\Users\nijiajin\Desktop\cshop\rz-base-info\target\rz-base-info-0.0.1.jar'
    remote_path_base = '/home/docker/gkzy/rz-base-info/'

    local_path_config = r'C:\Users\nijiajin\Desktop\cshop\rz-config\target\rz-config-0.0.1.jar'
    remote_path_config = '/home/docker/gkzy/rz-config/'

    local_path_sys = r'C:\Users\nijiajin\Desktop\cshop\rz-sys\target\rz-sys-0.0.1.jar'
    remote_path_sys = '/home/docker/gkzy/rz-sys/'

    local_path_web = r'C:\Users\nijiajin\Desktop\cshop\rz-web-admin\target\rz-web-admin-0.0.1.jar'
    remote_path_web = '/home/docker/gkzy/rz-web-admin/'

    host.upload(local_path_api, remote_path_api)
    host.upload(local_path_base, remote_path_base)
    host.upload(local_path_config, remote_path_config)
    host.upload(local_path_sys, remote_path_sys)
    host.upload(local_path_web, remote_path_web)
    print('*' * 50 + "上傳文件完成" + '*' * 50)

啓動鏡像

import re
import time
from 連接linux主機 import Host


def start_images():
    host117 = Host('172.17.20.117', 'root', '123456')
    host118 = Host('172.17.20.118', 'root', 'qweqaz123')
    host120 = Host('172.17.20.120', 'root', '123456')
    host121 = Host('172.17.20.121', 'root', '123456')

    run_once03 = host118.run_once('docker ps -a')
    ps_id_eureka = re.findall('(\\S{12})\\s{8}172.17.20.117:5000/rz-eureka', run_once03)[0]
    # 5.上傳config、sys、base-info、api、admin文件
    # TODO
    # 6.運行腳本文件,生成鏡像並推送私有倉庫
    once = host117.run_once('/home/docker/gkzy/docker_build_gkzy.sh')
    print(once)
    # 7.啓動eureka
    ps_stop_eureka_info = host118.run_once('docker start %s' % ps_id_eureka)
    print("啓動eureka:" + ps_stop_eureka_info)
    # 8.分別啓動config、sys、base、api、admin
    run_config = host117.run_once(
        'docker service create --replicas 1 --name config --network springcloud_overlay -p 7762:7762 -e "EUREKA_SERVER_ADDRESS=eureka" -e "MYSQL_SERVER=172.17.20.120:3306" -e "REDIS_SERVER=172.17.20.120" 172.17.20.117:5000/rz-config')
    print('啓動config:' + run_config)
    time.sleep(30)
    run_sys = host117.run_once(
        'docker service create --replicas 2 --name rz-sys --network springcloud_overlay -p 7768:7768 -e "EUREKA_SERVER_ADDRESS=eureka" -e "MYSQL_SERVER=172.17.20.120:3306" -e "REDIS_SERVER=172.17.20.120" 172.17.20.117:5000/rz-sys')
    print('啓動sys:' + run_sys)
    time.sleep(5)
    run_base = host117.run_once(
        'docker service create --replicas 3 --name rz-base-info  --network springcloud_overlay -p 7772:7772 -e "EUREKA_SERVER_ADDRESS=eureka" -e "MYSQL_SERVER=172.17.20.120:3306" -e "REDIS_SERVER=172.17.20.120" 172.17.20.117:5000/rz-base-info')
    print('啓動base:' + run_base)
    time.sleep(5)
    run_api = host117.run_once(
        'docker service create --replicas 4 --name rz-api-sh --network springcloud_overlay -p 7758:7758 -e "EUREKA_SERVER_ADDRESS=eureka" -e "MYSQL_SERVER=172.17.20.120:3306" -e "REDIS_SERVER=172.17.20.120" 172.17.20.117:5000/rz-api-sh')
    print('啓動api:' + run_api)
    run_web = host121.run_once(
        'docker run -d -v /etc/localtime:/etc/localtime:ro --name rz-web-admin --network=springcloud_overlay --network-alias=eureka -p 7782:7782 -e "EUREKA_SERVER_ADDRESS=eureka" -e "MYSQL_SERVER=172.17.20.120:3306" -e "REDIS_SERVER=172.17.20.120" 172.17.20.117:5000/rz-web-admin')
    print('啓動web:' + run_web)
    print('*' * 50 + "啓動完成" + '*' * 50)

連接linux主機

import re
import time
from 連接linux主機 import Host


def start_images():
    host117 = Host('172.17.20.117', 'root', '123456')
    host118 = Host('172.17.20.118', 'root', 'qweqaz123')
    host120 = Host('172.17.20.120', 'root', '123456')
    host121 = Host('172.17.20.121', 'root', '123456')

    run_once03 = host118.run_once('docker ps -a')
    ps_id_eureka = re.findall('(\\S{12})\\s{8}172.17.20.117:5000/rz-eureka', run_once03)[0]
    # 5.上傳config、sys、base-info、api、admin文件
    # TODO
    # 6.運行腳本文件,生成鏡像並推送私有倉庫
    once = host117.run_once('/home/docker/gkzy/docker_build_gkzy.sh')
    print(once)
    # 7.啓動eureka
    ps_stop_eureka_info = host118.run_once('docker start %s' % ps_id_eureka)
    print("啓動eureka:" + ps_stop_eureka_info)
    # 8.分別啓動config、sys、base、api、admin
    run_config = host117.run_once(
        'docker service create --replicas 1 --name config --network springcloud_overlay -p 7762:7762 -e "EUREKA_SERVER_ADDRESS=eureka" -e "MYSQL_SERVER=172.17.20.120:3306" -e "REDIS_SERVER=172.17.20.120" 172.17.20.117:5000/rz-config')
    print('啓動config:' + run_config)
    time.sleep(30)
    run_sys = host117.run_once(
        'docker service create --replicas 2 --name rz-sys --network springcloud_overlay -p 7768:7768 -e "EUREKA_SERVER_ADDRESS=eureka" -e "MYSQL_SERVER=172.17.20.120:3306" -e "REDIS_SERVER=172.17.20.120" 172.17.20.117:5000/rz-sys')
    print('啓動sys:' + run_sys)
    time.sleep(5)
    run_base = host117.run_once(
        'docker service create --replicas 3 --name rz-base-info  --network springcloud_overlay -p 7772:7772 -e "EUREKA_SERVER_ADDRESS=eureka" -e "MYSQL_SERVER=172.17.20.120:3306" -e "REDIS_SERVER=172.17.20.120" 172.17.20.117:5000/rz-base-info')
    print('啓動base:' + run_base)
    time.sleep(5)
    run_api = host117.run_once(
        'docker service create --replicas 4 --name rz-api-sh --network springcloud_overlay -p 7758:7758 -e "EUREKA_SERVER_ADDRESS=eureka" -e "MYSQL_SERVER=172.17.20.120:3306" -e "REDIS_SERVER=172.17.20.120" 172.17.20.117:5000/rz-api-sh')
    print('啓動api:' + run_api)
    run_web = host121.run_once(
        'docker run -d -v /etc/localtime:/etc/localtime:ro --name rz-web-admin --network=springcloud_overlay --network-alias=eureka -p 7782:7782 -e "EUREKA_SERVER_ADDRESS=eureka" -e "MYSQL_SERVER=172.17.20.120:3306" -e "REDIS_SERVER=172.17.20.120" 172.17.20.117:5000/rz-web-admin')
    print('啓動web:' + run_web)
    print('*' * 50 + "啓動完成" + '*' * 50)

logo.ico

https://www.easyicon.net/

注意一定要下載ico格式。強行改後綴報錯。

Main啓動函數:

from 刪除鏡像 import delete_images
from 上傳文件 import upload
from 啓動鏡像 import start_images

if __name__ == '__main__':
    delete_images()
    upload()
    start_images()

打包exe文件:

黑窗口cd到Main.py所在文件路徑下:pyinstaller -F -i logo.ico Main.py
有特殊需求,可以通過修改Main.space文件來達成。

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