diff --git a/internal/http/request/template.go b/internal/http/request/template.go index f8b9128b..9c3b9a4d 100644 --- a/internal/http/request/template.go +++ b/internal/http/request/template.go @@ -9,6 +9,7 @@ type TemplateSlug struct { type TemplateCreate struct { Slug string `json:"slug" validate:"required"` Name string `json:"name" validate:"required|regex:^[a-zA-Z0-9_-]+$"` + Compose string `json:"compose"` Envs []types.KV `json:"envs"` AutoFirewall bool `json:"auto_firewall"` } diff --git a/internal/service/template.go b/internal/service/template.go index fccf883f..dedf72eb 100644 --- a/internal/service/template.go +++ b/internal/service/template.go @@ -65,8 +65,14 @@ func (s *TemplateService) Create(w http.ResponseWriter, r *http.Request) { return } + // 使用用户自定义的 compose 内容,如果没有则使用模版默认内容 + compose := req.Compose + if compose == "" { + compose = template.Compose + } + // 创建编排 - dir, err := s.templateRepo.CreateCompose(req.Name, template.Compose, req.Envs, req.AutoFirewall) + dir, err := s.templateRepo.CreateCompose(req.Name, compose, req.Envs, req.AutoFirewall) if err != nil { Error(w, http.StatusInternalServerError, "%v", err) return diff --git a/web/src/api/panel/template/index.ts b/web/src/api/panel/template/index.ts index ebaccd17..77d0856a 100644 --- a/web/src/api/panel/template/index.ts +++ b/web/src/api/panel/template/index.ts @@ -9,6 +9,7 @@ export default { create: (data: { slug: string name: string + compose: string envs: { key: string; value: string }[] auto_firewall: boolean }): any => http.Post('/template', data), diff --git a/web/src/components/common/DiffEditor.vue b/web/src/components/common/DiffEditor.vue new file mode 100644 index 00000000..15727913 --- /dev/null +++ b/web/src/components/common/DiffEditor.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/web/src/views/app/TemplateDeployModal.vue b/web/src/views/app/TemplateDeployModal.vue index 089562ac..e45e7072 100644 --- a/web/src/views/app/TemplateDeployModal.vue +++ b/web/src/views/app/TemplateDeployModal.vue @@ -1,5 +1,7 @@