mirror of
https://github.com/142vip/408CSFamily.git
synced 2026-04-09 21:49:18 +08:00
feat: 修正脚本异常
This commit is contained in:
203
scripts/docker
Executable file
203
scripts/docker
Executable file
@@ -0,0 +1,203 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
*
|
||||
* 例如:
|
||||
* - ./scripts/network create
|
||||
* - ./scripts/network inspect
|
||||
* - ./scripts/network rm
|
||||
* - ./scripts/network ls
|
||||
*/
|
||||
const { execShell, BaseSetting} = require("./.exec");
|
||||
const scriptName=process.argv[2];
|
||||
|
||||
|
||||
/**
|
||||
* 网络基础信息
|
||||
* - 网络名称
|
||||
* - 子网掩码
|
||||
* - 网关地址
|
||||
*/
|
||||
const dockerNetworkInfo={
|
||||
defaultName:'service_env_net',
|
||||
subnet:'172.30.0.0/24',
|
||||
gateway:'172.30.0.1',
|
||||
}
|
||||
|
||||
const SupportScriptsInContainer={
|
||||
run:'',
|
||||
rm:'',
|
||||
ps:'docker ps'
|
||||
}
|
||||
|
||||
function getContainerCommand(){
|
||||
const scriptName=process.argv[3];
|
||||
if(scriptName==='rm')
|
||||
return SupportScriptsInContainer.rm
|
||||
if(scriptName==='run')
|
||||
return SupportScriptsInContainer.run
|
||||
if(scriptName==='ps')
|
||||
return SupportScriptsInContainer.ps
|
||||
return SupportScriptsInContainer.run
|
||||
}
|
||||
|
||||
|
||||
|
||||
const SupportScriptsInImage={
|
||||
rm:'docker rmi **',
|
||||
ps:'docker images'
|
||||
}
|
||||
|
||||
function getContainerCommand(){
|
||||
const scriptName=process.argv[3];
|
||||
if(scriptName==='rm')
|
||||
return SupportScriptsInContainer.rm
|
||||
if(scriptName==='run')
|
||||
return SupportScriptsInContainer.run
|
||||
if(scriptName==='ps')
|
||||
return SupportScriptsInContainer.ps
|
||||
return SupportScriptsInContainer.run
|
||||
}
|
||||
|
||||
const SupportScriptsInNetWork={
|
||||
ls:'docker network ls',
|
||||
create:[
|
||||
// 创建网关
|
||||
`
|
||||
docker network create \
|
||||
--subnet=${dockerNetworkInfo.subnet} \
|
||||
--gateway=${dockerNetworkInfo.gateway} \
|
||||
${dockerNetworkInfo.defaultName}
|
||||
`,
|
||||
// 查看创建后基本信息
|
||||
`
|
||||
docker network inspect ${dockerNetworkInfo.defaultName}
|
||||
`
|
||||
],
|
||||
rm:[
|
||||
// 参数校验
|
||||
`
|
||||
if test -z "${dockerNetworkInfo.defaultName}";then
|
||||
echo "参数错误 网络名称不能为空。脚本执行eg: bash xxx.sh rm 网络名称"
|
||||
exit 1;
|
||||
fi
|
||||
`,
|
||||
// 判断网络是否存在
|
||||
`
|
||||
docker network ls | grep -w "${dockerNetworkInfo.defaultName}"
|
||||
if [ $? -eq 1 ] ;then
|
||||
echo "容器网络:${dockerNetworkInfo.defaultName} 不存在,删除无效"
|
||||
exit 1;
|
||||
fi
|
||||
`,
|
||||
// 删除网络
|
||||
`
|
||||
docker network rm "${dockerNetworkInfo.defaultName}"
|
||||
`
|
||||
],
|
||||
inspect:
|
||||
`
|
||||
docker network inspect ${dockerNetworkInfo.defaultName}
|
||||
`
|
||||
}
|
||||
|
||||
function getNetworkCommand(){
|
||||
const scriptName=process.argv[3];
|
||||
|
||||
if(SupportScriptsInNetWork.hasOwnProperty(scriptName)){
|
||||
return SupportScriptsInNetWork[scriptName]
|
||||
}
|
||||
if(scriptName==='ls')
|
||||
return SupportScriptsInNetWork.ls
|
||||
if(scriptName==='run')
|
||||
return SupportScriptsInNetWork.create
|
||||
if(scriptName==='ps')
|
||||
return SupportScriptsInNetWork.rm
|
||||
if(scriptName==='inspect')
|
||||
return SupportScriptsInNetWork.inspect
|
||||
}
|
||||
|
||||
|
||||
// 支持的命令
|
||||
const SupportScripts={
|
||||
ls:'docker network ls',
|
||||
create:[
|
||||
// 创建网关
|
||||
`
|
||||
docker network create \
|
||||
--subnet=${dockerNetworkInfo.subnet} \
|
||||
--gateway=${dockerNetworkInfo.gateway} \
|
||||
${dockerNetworkInfo.defaultName}
|
||||
`,
|
||||
// 查看创建后基本信息
|
||||
`
|
||||
docker network inspect ${dockerNetworkInfo.defaultName}
|
||||
`
|
||||
],
|
||||
rm:[
|
||||
// 参数校验
|
||||
`
|
||||
if test -z "${dockerNetworkInfo.defaultName}";then
|
||||
echo "参数错误 网络名称不能为空。脚本执行eg: bash xxx.sh rm 网络名称"
|
||||
exit 1;
|
||||
fi
|
||||
`,
|
||||
// 判断网络是否存在
|
||||
`
|
||||
docker network ls | grep -w "${dockerNetworkInfo.defaultName}"
|
||||
if [ $? -eq 1 ] ;then
|
||||
echo "容器网络:${dockerNetworkInfo.defaultName} 不存在,删除无效"
|
||||
exit 1;
|
||||
fi
|
||||
`,
|
||||
// 删除网络
|
||||
`
|
||||
docker network rm "${dockerNetworkInfo.defaultName}"
|
||||
`
|
||||
],
|
||||
inspect:
|
||||
`
|
||||
docker network inspect ${dockerNetworkInfo.defaultName}
|
||||
`
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取需要执行的shell命令
|
||||
* @param scriptName
|
||||
* @returns {string}
|
||||
*/
|
||||
function getCommand(scriptName){
|
||||
let deployCommand=SupportScripts.ls
|
||||
|
||||
switch (scriptName) {
|
||||
case 'container':
|
||||
return getContainerCommand();
|
||||
case 'network':
|
||||
break;
|
||||
case 'image':
|
||||
break;
|
||||
}
|
||||
|
||||
if(scriptName==='ls'){
|
||||
deployCommand=SupportScripts.ls
|
||||
}
|
||||
|
||||
// 部署到Github
|
||||
if(scriptName==='rm'){
|
||||
deployCommand=SupportScripts.rm
|
||||
}
|
||||
if(scriptName==='create'){
|
||||
deployCommand=SupportScripts.create
|
||||
}
|
||||
if(scriptName==='inspect'){
|
||||
deployCommand=SupportScripts.inspect
|
||||
}
|
||||
return deployCommand
|
||||
}
|
||||
|
||||
|
||||
// 执行
|
||||
;(async ()=>{
|
||||
const command=getCommand(scriptName)
|
||||
await execShell(command)
|
||||
})()
|
||||
Reference in New Issue
Block a user