FROM golang:1.17-buster AS builder

# LD_FLAGS is passed as argument from Makefile. It will be empty, if no argument passed
ARG LD_FLAGS
ARG TARGETPLATFORM

ENV CGO_ENABLED=1
ENV GOPATH=/go

RUN export GOOS=$(echo ${TARGETPLATFORM} | cut -d / -f1) && \
    export GOARCH=$(echo ${TARGETPLATFORM} | cut -d / -f2)

# Prepare and enter src directory
WORKDIR /go/src/github.com/signoz/signoz

# Cache dependencies
ADD go.mod .
ADD go.sum .
RUN go mod download -x

# Add the sources and proceed with build
ADD . .
RUN cd pkg/query-service \
    && go build -tags timetzdata -a -o ./bin/query-service \
    -ldflags "-linkmode external -extldflags '-static' -s -w $LD_FLAGS" \
    && chmod +x ./bin/query-service


# use a minimal alpine image
FROM alpine:3.7

# Add Maintainer Info
LABEL maintainer="signoz"

# add ca-certificates in case you need them
RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/*

# set working directory
WORKDIR /root

# copy the binary from builder
COPY --from=builder /go/src/github.com/signoz/signoz/pkg/query-service/bin/query-service .

# copy prometheus YAML config
COPY pkg/query-service/config/prometheus.yml /root/config/prometheus.yml

# run the binary
ENTRYPOINT ["./query-service"]

CMD ["-config", "/root/config/prometheus.yml"]
# CMD ["./query-service -config /root/config/prometheus.yml"]

EXPOSE 8080
