fix(docker): nginx restart always output network error

This commit is contained in:
Jacky 2024-05-05 17:47:07 +08:00
parent 070c0b4620
commit 45a68112b1
No known key found for this signature in database
GPG key ID: 215C21B10DF38B4D
5 changed files with 113 additions and 94 deletions

View file

@ -4,27 +4,13 @@ import (
"github.com/0xJacky/Nginx-UI/settings"
"os/exec"
"sync"
"time"
)
var mutex sync.Mutex
func execShell(cmd string) (out string) {
bytes, err := exec.Command("/bin/sh", "-c", cmd).CombinedOutput()
out = string(bytes)
if err != nil {
out += " " + err.Error()
}
return
}
func execCommand(name string, cmd ...string) (out string) {
bytes, err := exec.Command(name, cmd...).CombinedOutput()
out = string(bytes)
if err != nil {
out += " " + err.Error()
}
return
}
var (
mutex sync.Mutex
lastOutput string
)
func TestConf() (out string) {
mutex.Lock()
@ -53,11 +39,15 @@ func Reload() (out string) {
return
}
func Restart() (out string) {
func Restart() {
mutex.Lock()
defer mutex.Unlock()
// fix(docker): nginx restart always output network error
time.Sleep(500 * time.Millisecond)
if settings.NginxSettings.RestartCmd != "" {
out = execShell(settings.NginxSettings.RestartCmd)
lastOutput = execShell(settings.NginxSettings.RestartCmd)
return
}
@ -65,15 +55,39 @@ func Restart() (out string) {
pidPath := GetPIDPath()
daemon := GetSbinPath()
out = execCommand("start-stop-daemon", "--stop", "--quiet", "--oknodo", "--retry=TERM/30/KILL/5", "--pidfile", pidPath)
lastOutput = execCommand("start-stop-daemon", "--stop", "--quiet", "--oknodo", "--retry=TERM/30/KILL/5", "--pidfile", pidPath)
if daemon == "" {
out += execCommand("nginx")
lastOutput += execCommand("nginx")
return
}
out += execCommand("start-stop-daemon", "--start", "--quiet", "--pidfile", pidPath, "--exec", daemon)
lastOutput += execCommand("start-stop-daemon", "--start", "--quiet", "--pidfile", pidPath, "--exec", daemon)
return
}
func GetLastOutput() string {
mutex.Lock()
defer mutex.Unlock()
return lastOutput
}
func execShell(cmd string) (out string) {
bytes, err := exec.Command("/bin/sh", "-c", cmd).CombinedOutput()
out = string(bytes)
if err != nil {
out += " " + err.Error()
}
return
}
func execCommand(name string, cmd ...string) (out string) {
bytes, err := exec.Command(name, cmd...).CombinedOutput()
out = string(bytes)
if err != nil {
out += " " + err.Error()
}
return
}