mirror of https://github.com/1Panel-dev/1Panel
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.3 KiB
53 lines
1.3 KiB
package compose
|
|
|
|
import (
|
|
"github.com/compose-spec/compose-go/loader"
|
|
"github.com/compose-spec/compose-go/types"
|
|
"os/exec"
|
|
)
|
|
|
|
func Up(filePath string) (string, error) {
|
|
cmd := exec.Command("docker-compose", "-f", filePath, "up", "-d")
|
|
stdout, err := cmd.CombinedOutput()
|
|
return string(stdout), err
|
|
}
|
|
|
|
func Down(filePath string) (string, error) {
|
|
cmd := exec.Command("docker-compose", "-f", filePath, "down")
|
|
stdout, err := cmd.CombinedOutput()
|
|
return string(stdout), err
|
|
}
|
|
|
|
func Restart(filePath string) (string, error) {
|
|
cmd := exec.Command("docker-compose", "-f", filePath, "restart")
|
|
stdout, err := cmd.CombinedOutput()
|
|
return string(stdout), err
|
|
}
|
|
|
|
func Rmf(filePath string) (string, error) {
|
|
cmd := exec.Command("docker-compose", "-f", filePath, "rm", "-f")
|
|
stdout, err := cmd.CombinedOutput()
|
|
return string(stdout), err
|
|
}
|
|
|
|
func GetComposeProject(yml []byte, env map[string]string) (*types.Project, error) {
|
|
var configFiles []types.ConfigFile
|
|
configFiles = append(configFiles, types.ConfigFile{
|
|
Filename: "docker-compose.yml",
|
|
Content: yml},
|
|
)
|
|
details := types.ConfigDetails{
|
|
WorkingDir: "",
|
|
ConfigFiles: configFiles,
|
|
Environment: env,
|
|
}
|
|
|
|
project, err := loader.Load(details, func(options *loader.Options) {
|
|
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return project, nil
|
|
}
|