Всем ку. Не могу понять, в чем проблема, может не вижу что-то. Сама аппа контейнера слушает на 80 порту и роут /health отдает ответ и код 200, аппа работает и запускается, в ней проблем нет. HealthCheck для контейнера не работает для Swarm ни через curl ни через httpcheck, контейнеры киляются и пересоздаются заново при replicas > 1. Контейнеры и сам Swarm управляются через Dokploy на VPS. Такое чувство, будто внутри контейнера нет доступа к
http://localhost/health, проверить не могу, т.к. scratch-образ, но возможно в нем и есть причина? Просто не хотелось бы раздувать его.
Dockerfile:
# syntax=docker/dockerfile:1
FROM golang:1.24 AS builder
ARG CGO_ENABLED=0
WORKDIR /app
RUN go env -w GOMODCACHE=/root/.cache/go-build
COPY . ./
RUN --mount=type=cache,target=/root/.cache/go-build go mod download
RUN --mount=type=cache,target=/root/.cache/go-build go build -o ./bin/service
FROM scratch
WORKDIR /app
COPY --from=builder /app/bin/service ./service
EXPOSE 80 8081
COPY --from=ghcr.io/tarampampam/microcheck:1 /bin/httpcheck /bin/httpcheck
HEALTHCHECK --interval=1m --timeout=5s CMD ["httpcheck", "http://localhost/health"]
ENTRYPOINT ["/app/service"]