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:
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user