feat: 创建compose支持env

This commit is contained in:
耗子
2025-03-21 03:18:35 +08:00
parent 28d699c886
commit 422c92cca5
4 changed files with 23 additions and 11 deletions
+2 -2
View File
@@ -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
+14 -6
View File
@@ -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 启动编排
@@ -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 {
+6 -3
View File
@@ -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
}