FROM golang:1.25-alpine AS builder

RUN apk add --no-cache git gcc musl-dev

WORKDIR /go/croc

COPY . .

RUN go build -v -ldflags="-s -w"

FROM alpine:latest

EXPOSE 9009
EXPOSE 9010
EXPOSE 9011
EXPOSE 9012
EXPOSE 9013

COPY --from=builder /go/croc/croc /go/croc/croc-entrypoint.sh /

USER nobody

# Simple TCP health check with nc!
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
    CMD sh -c ' \
    P="${CROC_PORTS:-${CROC_PORT:-9009}}"; \
    IFS=,; set -- $P; \
    for p in "$@"; do \
        nc -z -w 3 localhost "$p" || exit 1; \
    done'

ENTRYPOINT ["/croc-entrypoint.sh"]
CMD ["relay"]
