|
@@ -0,0 +1,74 @@
|
|
|
+/*
|
|
|
+ * If changed, have to run `npm run build-docker-builder-go`.
|
|
|
+ * This script should be run after a period of time (180s), because the server may need some time to prepare.
|
|
|
+ */
|
|
|
+package main
|
|
|
+
|
|
|
+import (
|
|
|
+ "crypto/tls"
|
|
|
+ "io/ioutil"
|
|
|
+ "log"
|
|
|
+ "net/http"
|
|
|
+ "os"
|
|
|
+ "strings"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+func main() {
|
|
|
+ // Is K8S + "dockge" as the container name
|
|
|
+ // See https://github.com/louislam/uptime-kuma/pull/2083
|
|
|
+ isK8s := strings.HasPrefix(os.Getenv("DOCKGE_PORT"), "tcp://")
|
|
|
+
|
|
|
+ // process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
|
|
|
+ http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{
|
|
|
+ InsecureSkipVerify: true,
|
|
|
+ }
|
|
|
+
|
|
|
+ client := http.Client{
|
|
|
+ Timeout: 28 * time.Second,
|
|
|
+ }
|
|
|
+
|
|
|
+ sslKey := os.Getenv("DOCKGE_SSL_KEY")
|
|
|
+ sslCert := os.Getenv("DOCKGE_SSL_CERT")
|
|
|
+
|
|
|
+ hostname := os.Getenv("DOCKGE_HOST")
|
|
|
+ if len(hostname) == 0 {
|
|
|
+ hostname = "127.0.0.1"
|
|
|
+ }
|
|
|
+
|
|
|
+ port := ""
|
|
|
+ // DOCKGE_PORT is override by K8S unexpectedly,
|
|
|
+ if !isK8s {
|
|
|
+ port = os.Getenv("DOCKGE_PORT")
|
|
|
+ }
|
|
|
+ if len(port) == 0 {
|
|
|
+ port = "5001"
|
|
|
+ }
|
|
|
+
|
|
|
+ protocol := ""
|
|
|
+ if len(sslKey) != 0 && len(sslCert) != 0 {
|
|
|
+ protocol = "https"
|
|
|
+ } else {
|
|
|
+ protocol = "http"
|
|
|
+ }
|
|
|
+
|
|
|
+ url := protocol + "://" + hostname + ":" + port
|
|
|
+
|
|
|
+ log.Println("Checking " + url)
|
|
|
+ resp, err := client.Get(url)
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ log.Fatalln(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ defer resp.Body.Close()
|
|
|
+
|
|
|
+ _, err = ioutil.ReadAll(resp.Body)
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ log.Fatalln(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ log.Printf("Health Check OK [Res Code: %d]\n", resp.StatusCode)
|
|
|
+
|
|
|
+}
|