mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2025-03-14 01:34:47 +08:00
feat: 解决在容器被删除之后重启应用状态不对的BUG
This commit is contained in:
parent
71126db6b3
commit
b54cbe1d11
@ -164,25 +164,25 @@ func (a AppInstallService) Operate(req request.AppInstalledOperate) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return handleErr(install, err, out)
|
return handleErr(install, err, out)
|
||||||
}
|
}
|
||||||
return nil
|
return syncById(install.ID)
|
||||||
case constant.Start:
|
case constant.Start:
|
||||||
out, err := compose.Start(dockerComposePath)
|
out, err := compose.Start(dockerComposePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return handleErr(install, err, out)
|
return handleErr(install, err, out)
|
||||||
}
|
}
|
||||||
install.Status = constant.Running
|
return syncById(install.ID)
|
||||||
case constant.Stop:
|
case constant.Stop:
|
||||||
out, err := compose.Stop(dockerComposePath)
|
out, err := compose.Stop(dockerComposePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return handleErr(install, err, out)
|
return handleErr(install, err, out)
|
||||||
}
|
}
|
||||||
install.Status = constant.Stopped
|
return syncById(install.ID)
|
||||||
case constant.Restart:
|
case constant.Restart:
|
||||||
out, err := compose.Restart(dockerComposePath)
|
out, err := compose.Restart(dockerComposePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return handleErr(install, err, out)
|
return handleErr(install, err, out)
|
||||||
}
|
}
|
||||||
install.Status = constant.Running
|
return syncById(install.ID)
|
||||||
case constant.Delete:
|
case constant.Delete:
|
||||||
tx, ctx := getTxAndContext()
|
tx, ctx := getTxAndContext()
|
||||||
if err := deleteAppInstall(ctx, install, req.DeleteBackup, req.ForceDelete, req.DeleteDB); err != nil && !req.ForceDelete {
|
if err := deleteAppInstall(ctx, install, req.DeleteBackup, req.ForceDelete, req.DeleteDB); err != nil && !req.ForceDelete {
|
||||||
@ -198,8 +198,6 @@ func (a AppInstallService) Operate(req request.AppInstalledOperate) error {
|
|||||||
default:
|
default:
|
||||||
return errors.New("operate not support")
|
return errors.New("operate not support")
|
||||||
}
|
}
|
||||||
|
|
||||||
return appInstallRepo.Save(&install)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a AppInstallService) SyncAll() error {
|
func (a AppInstallService) SyncAll() error {
|
||||||
|
@ -401,6 +401,7 @@ func handleErr(install model.AppInstall, err error, out string) error {
|
|||||||
if out != "" {
|
if out != "" {
|
||||||
install.Message = out
|
install.Message = out
|
||||||
reErr = errors.New(out)
|
reErr = errors.New(out)
|
||||||
|
install.Status = constant.Error
|
||||||
}
|
}
|
||||||
_ = appInstallRepo.Save(&install)
|
_ = appInstallRepo.Save(&install)
|
||||||
return reErr
|
return reErr
|
||||||
|
@ -296,6 +296,9 @@ const operate = async () => {
|
|||||||
MsgSuccess(i18n.global.t('commons.msg.operationSuccess'));
|
MsgSuccess(i18n.global.t('commons.msg.operationSuccess'));
|
||||||
search();
|
search();
|
||||||
})
|
})
|
||||||
|
.catch(() => {
|
||||||
|
search();
|
||||||
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
});
|
});
|
||||||
@ -398,7 +401,7 @@ onMounted(() => {
|
|||||||
search();
|
search();
|
||||||
timer = setInterval(() => {
|
timer = setInterval(() => {
|
||||||
search();
|
search();
|
||||||
}, 1000 * 8);
|
}, 10000 * 6);
|
||||||
});
|
});
|
||||||
|
|
||||||
onUnmounted(() => {
|
onUnmounted(() => {
|
||||||
|
@ -43,20 +43,22 @@
|
|||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</template>
|
</template>
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
<el-button plain @click="openUpload" style="margin-left: 10px">{{ $t('file.upload') }}</el-button>
|
<el-button-group style="margin-left: 10px">
|
||||||
<el-button plain @click="openWget">{{ $t('file.remoteFile') }}</el-button>
|
<el-button plain @click="openUpload">{{ $t('file.upload') }}</el-button>
|
||||||
<el-button plain @click="openMove('copy')" :disabled="selects.length === 0">
|
<el-button plain @click="openWget">{{ $t('file.remoteFile') }}</el-button>
|
||||||
{{ $t('file.copy') }}
|
<el-button plain @click="openMove('copy')" :disabled="selects.length === 0">
|
||||||
</el-button>
|
{{ $t('file.copy') }}
|
||||||
<el-button plain @click="openMove('cut')" :disabled="selects.length === 0">
|
</el-button>
|
||||||
{{ $t('file.move') }}
|
<el-button plain @click="openMove('cut')" :disabled="selects.length === 0">
|
||||||
</el-button>
|
{{ $t('file.move') }}
|
||||||
<el-button plain @click="openCompress(selects)" :disabled="selects.length === 0">
|
</el-button>
|
||||||
{{ $t('file.compress') }}
|
<el-button plain @click="openCompress(selects)" :disabled="selects.length === 0">
|
||||||
</el-button>
|
{{ $t('file.compress') }}
|
||||||
<el-button plain @click="openDownload" :disabled="selects.length === 0">
|
</el-button>
|
||||||
{{ $t('file.download') }}
|
<el-button plain @click="openDownload" :disabled="selects.length === 0">
|
||||||
</el-button>
|
{{ $t('file.download') }}
|
||||||
|
</el-button>
|
||||||
|
</el-button-group>
|
||||||
<div class="search search-button">
|
<div class="search search-button">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="req.search"
|
v-model="req.search"
|
||||||
|
@ -5,14 +5,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<el-row v-loading="loading">
|
<el-row v-loading="loading">
|
||||||
<el-col :span="22" :offset="1">
|
<el-col :span="22" :offset="1">
|
||||||
<el-form
|
<el-form ref="sslForm" label-position="top" :model="ssl" label-width="100px" :rules="rules">
|
||||||
ref="sslForm"
|
|
||||||
label-position="top"
|
|
||||||
:model="ssl"
|
|
||||||
label-width="100px"
|
|
||||||
:rules="rules"
|
|
||||||
v-loading="loading"
|
|
||||||
>
|
|
||||||
<el-form-item :label="$t('website.primaryDomain')" prop="primaryDomain">
|
<el-form-item :label="$t('website.primaryDomain')" prop="primaryDomain">
|
||||||
<el-input v-model="ssl.primaryDomain"></el-input>
|
<el-input v-model="ssl.primaryDomain"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -139,7 +132,7 @@ let ssl = ref({
|
|||||||
websiteId: 0,
|
websiteId: 0,
|
||||||
acmeAccountId: undefined,
|
acmeAccountId: undefined,
|
||||||
dnsAccountId: undefined,
|
dnsAccountId: undefined,
|
||||||
autoRenew: false,
|
autoRenew: true,
|
||||||
});
|
});
|
||||||
let dnsResolve = ref<Website.DNSResolve[]>([]);
|
let dnsResolve = ref<Website.DNSResolve[]>([]);
|
||||||
let hasResolve = ref(false);
|
let hasResolve = ref(false);
|
||||||
@ -160,7 +153,7 @@ const resetForm = () => {
|
|||||||
websiteId: 0,
|
websiteId: 0,
|
||||||
acmeAccountId: undefined,
|
acmeAccountId: undefined,
|
||||||
dnsAccountId: undefined,
|
dnsAccountId: undefined,
|
||||||
autoRenew: false,
|
autoRenew: true,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@
|
|||||||
{{ websiteSSL.primaryDomain }}
|
{{ websiteSSL.primaryDomain }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item :label="$t('website.otherDomains')">
|
<el-descriptions-item :label="$t('website.otherDomains')">
|
||||||
{{ websiteSSL.otherDomains }}
|
{{ websiteSSL.domains }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item :label="$t('ssl.provider')">
|
<el-descriptions-item :label="$t('ssl.provider')">
|
||||||
{{ getProvider(websiteSSL.provider) }}
|
{{ getProvider(websiteSSL.provider) }}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user