1
0
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:
zhengkunwang223 2023-03-07 15:43:12 +08:00 committed by zhengkunwang223
parent 71126db6b3
commit b54cbe1d11
6 changed files with 29 additions and 32 deletions

View File

@ -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 {

View File

@ -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

View File

@ -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(() => {

View File

@ -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"

View File

@ -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,
}; };
}; };

View File

@ -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) }}