FROM golang:1.21-alpine AS develop

# Changement du répertoire de travail
WORKDIR /

RUN apk update && apk add --no-cache curl tar && \
  curl -O https://gitlab.g3e.fr/api/v4/projects/34/packages/generic/minicurl/v1.0.0/minicurl_linux_amd64.tar.gz && \
  tar xzvf minicurl_linux_amd64.tar.gz

# 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"]