


Docker Compose Healthcheck wurde nicht beendet, es ist ein Fehler aufgetreten und konnte nicht gestartet werden
Ich habe diese Erstellungsdatei:
version: "3" services: app: build: . ports: - 8080:8080 volumes: - "./:/src" healthcheck: test: ["CMD-SHELL", "curl -f http://localhost:8080/fail-health-check || exit 1"] interval: 5s timeout: 5s retries: 1 command: ["go", "run", "main.go"]
Docker-Datei:
FROM golang:1.21 as builder WORKDIR /src COPY go.mod go.sum ./ RUN go mod download
Wenn ich Docker Compose ausführe, werden die Gesundheitsprüfungen der Anwendung weiterhin ausgeführt. Ich möchte, dass der Container mit der Fehlermeldung „Container konnte nicht gestartet werden“ beendet wird.
Golang-Codemain.go
package main import ( "fmt" "log" "github.com/labstack/echo/v4" "github.com/labstack/echo/v4/middleware" ) func main() { r := echo.New() r.Use(middleware.Logger()) fmt.Println("start http server on port 8080") if err := r.Start(":8080"); err != nil { log.Fatal(err) } }
Hier ist die Login-App:
test_healthcheck_go_app-app-1 | {"time":"2023-11-14T04:08:42.450751594Z","id":"","remote_ip":"127.0.0.1","host":"localhost:8080","method":"GET","uri":"/fail-health-check","user_agent":"curl/7.88.1","status":404,"error":"code=404, message=Not Found","latency":26375,"latency_human":"26.375µs","bytes_in":0,"bytes_out":24}
docker ps
Ausgabe
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ff389f13ab1d test_healthcheck_go_app-app "go run main.go" 48 seconds ago Up 46 seconds (unhealthy) 0.0.0.0:8080->8080/tcp test_healthcheck_go_app-app-1
Richtige Antwort
- Ihre Anwendung weiß nicht, dass sie in einem Container ausgeführt wird.
- Ihr Hauptprozess (
go run main.go
)正在以PID 1
) läuft, Sie müssen den Prozess stoppen, um den Container zu verlassen, und der Prozess ist geschützt
Wenn Sie diese beiden Fakten verstehen, haben Sie mehrere Möglichkeiten:
-
Installieren Sie Docker CLI im Container. Ordnen Sie dann den Docker-Socket dem Container zu und führen Sie ihn aus
docker stop
. Das Zuordnen von Sockets zu Containern hat Auswirkungen auf die Sicherheit. Gehen Sie daher mit Vorsicht vor. -
Lauf
ps -afx | 等命令grep 去 | awk '{print }' | xargs Kill -9
(对这个答案表示敬意),即特别是在您的healthcheck
中,它可能看起来像curl -f http:// /本地主机:8080/失败健康检查 || (ps -afx | grep go | awk '{print }' | xargs Kill -9)
-
Aber meiner Meinung nach braucht man wirklich ein Container-Orchestrierungssystem wie Kubernetes. Dieser Rat kann etwas viel sein oder auch nicht. Hängt von Ihrem Projektplan ab. Unabhängig davon wird es Ihnen dabei helfen, Ihre laufenden Container robuster zu verwalten.
Ob Sie einen Fehler generieren möchten, hängt davon ab, welchen Protokollierungstreiber Sie verwenden. Verwenden Sie syslog
驱动程序,Docker 容器将日志写入 /var/log/syslog
。因此,在退出之前,您可能需要 echo "Error text"
到 /var/log/syslog
.
Das obige ist der detaillierte Inhalt vonDocker Compose Healthcheck wurde nicht beendet, es ist ein Fehler aufgetreten und konnte nicht gestartet werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Echtzeit-Bitcoin-USD-Preis Faktoren, die den Bitcoin -Preis beeinflussen Indikatoren für die Vorhersage zukünftiger Bitcoin -Preise Hier finden Sie einige wichtige Informationen zum Preis von Bitcoin in den Jahren 2018-2024:

Ja, die H5-Seitenproduktion ist eine wichtige Implementierungsmethode für die Front-End-Entwicklung, die Kerntechnologien wie HTML, CSS und JavaScript umfasst. Entwickler bauen dynamische und leistungsstarke H5 -Seiten auf, indem sie diese Technologien geschickt kombinieren, z. B. die Verwendung der & lt; canvas & gt; Tag, um Grafiken zu zeichnen oder JavaScript zu verwenden, um das Interaktionsverhalten zu steuern.

Die Methode zur Anpassung der Größe der Größe der Größe der Größe in CSS ist mit Hintergrundfarben einheitlich. In der täglichen Entwicklung begegnen wir häufig Situationen, in denen wir die Details der Benutzeroberfläche wie Anpassung anpassen müssen ...

In Bezug auf die Gründe und Lösungen für falsch ausgerichtete Darstellung von Inline-Block-Elementen. Beim Schreiben von Webseitenlayout stoßen wir oft auf einige scheinbar seltsame Anzeigenprobleme. Vergleichen...

So verwenden Sie JavaScript oder CSS, um die obere und das Ende der Seite in den Druckeinstellungen des Browsers zu steuern. In den Druckeinstellungen des Browsers gibt es eine Option, um zu steuern, ob das Display ist ...

Das Problem der Containeröffnung aufgrund einer übermäßigen Auslassung von Text unter Flex -Layout und Lösungen werden verwendet ...

Wie kann man den 45-Grad-Kurveneffekt des Segmenters erreichen? Bei der Implementierung des Segmenters verwandeln Sie den rechten Rand in eine 45-Grad-Kurve, wenn Sie auf die linke Schaltfläche klicken, und der Punkt ...

Tipps zur Implementierung von Segmentierereffekten im Design der Benutzeroberfläche sind Segmentierer ein gemeinsames Navigationselement, insbesondere in mobilen Anwendungen und reaktionsschnellen Webseiten. ...
