文件结构如上图
删除镜像
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
注意一定要下载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文件来达成。