我有一個 php 專案來測驗運行狀況檢查,其中包含三個檔案:
索引.php
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<h1>Hi from container: <?php echo gethostname(); ?> </h1>
</body>
</html>
健康.php
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<h1>hi</h1>
</body>
</html>
Dockerfile:
FROM php:8.0-apache
EXPOSE 80
COPY ["./", "/var/www/html/"]
HEALTHCHECK CMD curl --fail http://localhost/health.php exit 1
然后我使用docker run -p 8000:80 phpdemo_local
運行 dockerfile 時它會啟動,但如果我這樣做,docker ps我會得到以下資訊:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e980991ce911 phpdemo_local:latest "docker-php-entrypoi…" 42 seconds ago Up 42 seconds (health: starting) 80/tcp nice_pare
如果我打開瀏覽器并瀏覽到http://localhost:8000/health.php我得到以下回應:hi這顯然是 HTTPStatusCode 200 所以我的健康檢查也應該通過,因為我檢查狀態 200
但由于某種原因docker ps回傳狀態“開始”,然后最終健康狀態變為“不健康”。
我在這里做錯了什么?
我覺得 healthchech 無法訪問指定的 HEALTHCHECK url?!?
uj5u.com熱心網友回復:
你需要||在 curl 命令和 exit 命令之間有一個,所以只有在 curl 失敗時才會執行 exit。像這樣
HEALTHCHECK CMD curl --fail http://localhost/health.php || exit 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/476086.html
