


docker compose healthcheck ne s'est pas terminé et une erreur s'est produite et n'a pas pu être démarré
Feb 06, 2024 am 08:50 AMJ'ai ce fichier de composition :
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"]
Fichier Docker :
FROM golang:1.21 as builder WORKDIR /src COPY go.mod go.sum ./ RUN go mod download
Lorsque j'exécute Docker Compose, les vérifications de l'état de l'application continuent de s'exécuter. Je souhaite que le conteneur se ferme avec l'erreur Impossible de démarrer le conteneur.
code golangmain.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) } }
Voici l'application de connexion :
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
sortie
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
Bonne réponse
- Votre application ne sait pas qu'elle s'exécute dans un conteneur.
- Votre processus principal (
go run main.go
)正在以PID 1
) est en cours d'exécution, vous devez arrêter le processus pour quitter le conteneur et le processus est protégé .
Comprenant ces deux faits, vous avez plusieurs possibilités :
-
Installez Docker cli à l'intérieur du conteneur. Mappez ensuite le socket docker dans le conteneur et exécutez
docker stop
. Le mappage des sockets dans des conteneurs a des implications en matière de sécurité : procédez avec prudence. -
Courez
ps -afx | 等命令grep 去 | awk '{print }' | xargs Kill -9
(对这个答案表示敬意),即特别是在您的healthcheck
中,它可能看起来像curl -f http:// /本地主机:8080/失败健康检查 || (ps -afx | grep go | awk '{print }' | xargs Kill -9)
-
Mais à mon avis, ce dont vous avez vraiment besoin, c'est d'un système d'orchestration de conteneurs comme Kubernetes. Ce conseil peut être un peu excessif ou non. Cela dépend de votre plan de projet. Quoi qu’il en soit, cela vous aidera à gérer vos conteneurs en cours d’exécution de manière plus robuste.
Si vous souhaitez générer une erreur, cela dépend du pilote de journalisation que vous utilisez. Utilisez syslog
驱动程序,Docker 容器将日志写入 /var/log/syslog
。因此,在退出之前,您可能需要 echo "Error text"
到 /var/log/syslog
.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Le prix du Bitcoin depuis sa naissance 2009-2025 Le résumé le plus complet des prix historiques du BTC

Que faire si l'heure dans le coin inférieur droit de Windows 11 est révolue_Que faire si l'heure dans le coin inférieur droit de Windows 11 est révolue

Existe-t-il des forums communautaires ou des groupes de discussion sur les fonctions Java où je peux poser des questions et en discuter ?

Comment utiliser le code d'autres personnes en python

Que dois-je faire si l'heure sur mon ordinateur Win11 est toujours fausse ? Comment régler la mauvaise heure sur un ordinateur Windows 11

Types d'exceptions courants et leurs mesures de réparation dans le développement de fonctions Java

Personne ne s'occupe des comptes aléatoires de Douyin ? Puis-je faire appel une deuxième fois ?
