实现单体实例安装工具

This commit is contained in:
GoEdgeLab
2024-01-29 17:57:01 +08:00
parent 12fd8b80b0
commit d6ff39966b
12 changed files with 1333 additions and 18 deletions

View File

@@ -0,0 +1,2 @@
standalone-instance-installer*
prepare.sh

View File

@@ -0,0 +1,17 @@
#!/usr/bin/env bash
OS="${1}"
ARCH="${2}"
TAG="${3}"
if [ -z "$OS" ]; then
echo "usage: build.sh OS ARCH"
exit
fi
if [ -z "$ARCH" ]; then
echo "usage: build.sh OS ARCH"
exit
fi
env GOOS=linux GOARCH="${ARCH}" go build -tags="${TAG}" -trimpath -ldflags="-s -w" -o "standalone-instance-installer-${OS}-${ARCH}" main.go

View File

@@ -0,0 +1,74 @@
// Copyright 2024 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
package main
import (
"fmt"
"github.com/TeaOSLab/EdgeAPI/internal/instances"
_ "github.com/iwind/TeaGo/bootstrap"
"github.com/iwind/TeaGo/lists"
"os"
"strings"
)
func main() {
dbPasswordData, err := os.ReadFile("/usr/local/mysql/generated-password.txt")
if err != nil {
fmt.Println("[ERROR]read mysql password failed: " + err.Error())
return
}
var dbPassword = strings.TrimSpace(string(dbPasswordData))
var isTesting = lists.ContainsString(os.Args, "-test") || lists.ContainsString(os.Args, "--test")
if isTesting {
fmt.Println("testing mode ...")
}
var instance = instances.NewInstance(instances.Options{
IsTesting: isTesting,
Verbose: lists.ContainsString(os.Args, "-v"),
Cacheable: true,
WorkDir: "",
SrcDir: "/usr/local/goedge/src",
DB: struct {
Host string
Port int
Username string
Password string
Name string
}{
Host: "127.0.0.1",
Port: 3306,
Username: "root",
Password: dbPassword,
Name: "edges",
},
AdminNode: struct {
Port int
}{
Port: 7788,
},
APINode: struct {
HTTPPort int
RestHTTPPort int
}{
HTTPPort: 8001,
RestHTTPPort: 8002,
},
Node: struct{ HTTPPort int }{
HTTPPort: 8080,
},
UserNode: struct {
HTTPPort int
}{
HTTPPort: 7799,
},
})
err = instance.SetupAll()
if err != nil {
fmt.Println("[ERROR]setup failed: " + err.Error())
return
}
fmt.Println("ok")
}