我有这个合成文件:
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"]
文档文件:
FROM golang:1.21 as builder
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
当我运行Docker Compose时,应用程序的运行状况判断一直在运行.我希望容器退出,但出现启动容器失败的错误.
golang 码main.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)
}
}
在这里登录应用程序:
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
个yields
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