From 422c92cca5aa7869acf5789f31f897a2eb3e599b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Fri, 21 Mar 2025 03:18:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=88=9B=E5=BB=BAcompose=E6=94=AF?= =?UTF-8?q?=E6=8C=81env?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/biz/container_compose.go | 4 ++-- internal/data/container_compose.go | 20 ++++++++++++++------ internal/http/request/container_compose.go | 1 + internal/service/container_compose.go | 9 ++++++--- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/internal/biz/container_compose.go b/internal/biz/container_compose.go index 61028a7e..28a9f8b2 100644 --- a/internal/biz/container_compose.go +++ b/internal/biz/container_compose.go @@ -2,8 +2,8 @@ package biz type ContainerComposeRepo interface { List() ([]string, error) - Get(name string) (string, error) - Create(name, compose string) error + Get(name string) (string, string, error) + Create(name, compose, env string) error Up(name string, force bool) error Down(name string) error Remove(name string) error diff --git a/internal/data/container_compose.go b/internal/data/container_compose.go index acb0f46a..36161fdc 100644 --- a/internal/data/container_compose.go +++ b/internal/data/container_compose.go @@ -37,19 +37,27 @@ func (r *containerComposeRepo) List() ([]string, error) { return names, nil } -// Get 获取编排文件内容 -func (r *containerComposeRepo) Get(name string) (string, error) { - content, err := os.ReadFile(filepath.Join(app.Root, "server", "compose", name, "docker-compose.yml")) - return string(content), err +// Get 获取编排文件和环境变量内容 +func (r *containerComposeRepo) Get(name string) (string, string, error) { + content, _ := os.ReadFile(filepath.Join(app.Root, "server", "compose", name, "docker-compose.yml")) + env, _ := os.ReadFile(filepath.Join(app.Root, "server", "compose", name, ".env")) + return string(content), string(env), nil // 有意忽略错误,这样可以允许新建文件 } // Create 创建编排文件 -func (r *containerComposeRepo) Create(name, compose string) error { +func (r *containerComposeRepo) Create(name, compose, env string) error { dir := filepath.Join(app.Root, "server", "compose", name) if err := os.MkdirAll(dir, 0644); err != nil { return err } - return os.WriteFile(filepath.Join(dir, "docker-compose.yml"), []byte(compose), 0644) + if err := os.WriteFile(filepath.Join(dir, "docker-compose.yml"), []byte(compose), 0644); err != nil { + return err + } + if err := os.WriteFile(filepath.Join(dir, ".env"), []byte(env), 0644); err != nil { + return err + } + + return nil } // Up 启动编排 diff --git a/internal/http/request/container_compose.go b/internal/http/request/container_compose.go index 902957ff..b78855ef 100644 --- a/internal/http/request/container_compose.go +++ b/internal/http/request/container_compose.go @@ -7,6 +7,7 @@ type ContainerComposeGet struct { type ContainerComposeCreate struct { Name string `json:"name" validate:"required"` Compose string `json:"compose" validate:"required"` + Env string `json:"env"` } type ContainerComposeUp struct { diff --git a/internal/service/container_compose.go b/internal/service/container_compose.go index 96c8f19d..ceee803f 100644 --- a/internal/service/container_compose.go +++ b/internal/service/container_compose.go @@ -41,13 +41,16 @@ func (s *ContainerComposeService) Get(w http.ResponseWriter, r *http.Request) { return } - content, err := s.containerComposeRepo.Get(req.Name) + compose, env, err := s.containerComposeRepo.Get(req.Name) if err != nil { Error(w, http.StatusInternalServerError, "%v", err) return } - Success(w, content) + Success(w, chix.M{ + "compose": compose, + "env": env, + }) } func (s *ContainerComposeService) Create(w http.ResponseWriter, r *http.Request) { @@ -57,7 +60,7 @@ func (s *ContainerComposeService) Create(w http.ResponseWriter, r *http.Request) return } - if err = s.containerComposeRepo.Create(req.Name, req.Compose); err != nil { + if err = s.containerComposeRepo.Create(req.Name, req.Compose, req.Env); err != nil { Error(w, http.StatusInternalServerError, "%v", err) return }