FROM golang:1.24-alpine AS develop

# Changement du répertoire de travail
WORKDIR /

RUN apk update && apk add --no-cache curl tar && \
  curl -OJ https://git.g3e.fr/api/packages/H6N/generic/minicurl/1.1.0/minicurl-linux-amd64 && \
  mv minicurl-linux-amd64 minicurl && \
  chmod +x ./minicurl

# Changement du répertoire de travail
WORKDIR /app

# pre-copy/cache go.mod for pre-downloading dependencies and only redownloading them in subsequent builds if they change
COPY go.mod go.sum ./
RUN go mod download && go mod verify

ENV PORT=1222
HEALTHCHECK --interval=1s --timeout=30s --start-period=5s --retries=3 CMD [ "/minicurl" ]

COPY . .

CMD ["sh", "-c", "echo 'run application' &&  go run ./cmd/"]

FROM develop AS build

RUN CGO_ENABLED=0 go build -o ./build/app ./cmd/

FROM scratch AS release

COPY --from=build /app/build/app /exec
COPY --from=develop /minicurl /minicurl

EXPOSE 1222

ENV PORT=1222
HEALTHCHECK --interval=1s --timeout=30s --start-period=5s --retries=3 CMD [ "/minicurl" ]

ENTRYPOINT ["/exec"]