FROM golang:1.14 as stage-build
LABEL stage=stage-build
WORKDIR /build/ko
ARG GOPROXY
ARG GOARCH
ARG XPACK

ENV GOARCH=$GOARCH
ENV GO111MODULE=on
ENV GOOS=linux
ENV CGO_ENABLED=1

RUN apt update && apt install unzip

COPY go.mod go.sum ./
RUN go mod download

RUN wget https://github.com/go-bindata/go-bindata/archive/v3.1.3.zip -O /tmp/go-bindata.zip  \
    && cd /tmp \
    && unzip  /tmp/go-bindata.zip  \
    && cd /tmp/go-bindata-3.1.3 \
    && go build \
    && cd go-bindata \
    && go build \
    && cp go-bindata /go/bin

RUN export PATH=$PATH:$GOPATH/bin

COPY . .
RUN make build_server_linux GOARCH=$GOARCH

RUN if [ "$XPACK" = "yes" ] ; then  cd xpack && sed -i 's/ ..\/KubeOperator/ \..\/..\/ko/g' go.mod && make build_linux GOARCH=$GOARCH && cp -r dist/* ../dist/  ; fi

FROM ubuntu:18.04
RUN apt update && apt install wget curl -y

WORKDIR /usr/local/bin

RUN wget https://fit2cloud-support.oss-cn-beijing.aliyuncs.com/xpack-license/validator_linux_arm64 \
    && wget https://fit2cloud-support.oss-cn-beijing.aliyuncs.com/xpack-license/validator_linux_amd64

RUN chmod +x validator_linux_arm64 \
    && chmod +x validator_linux_amd64

WORKDIR /tmp

RUN wget https://github.com/FairwindsOps/polaris/archive/1.2.1.tar.gz -O ./polaris.tar.gz \
    && tar zxvf ./polaris.tar.gz \
    && mv ./polaris-1.2.1/checks/ /checks

RUN wget https://dl.k8s.io/v1.18.6/kubernetes-client-linux-amd64.tar.gz && https://dl.k8s.io/v1.18.6/kubernetes-client-linux-arm64.tar.gz
RUN tar -zvxf kubernetes-client-linux-amd64.tar.gz && tar -zvxf kubernetes-client-linux-arm64.tar.gz
RUN cp ./kubernetes/client/bin/* /usr/local/bin


WORKDIR /

COPY --from=stage-build /build/ko/dist/etc /etc/
COPY --from=stage-build /usr/local/go/lib/time/zoneinfo.zip /opt/zoneinfo.zip
ENV ZONEINFO /opt/zoneinfo.zip

COPY --from=stage-build /build/ko/dist/etc /etc/
COPY --from=stage-build /build/ko/dist/usr /usr/

EXPOSE 8080


CMD ["ko-server"]
