2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-04 06:47:20 +08:00

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

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

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 启动编排

View File

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

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
}