FROM devtools/go-toolset-rhel7:1.13 AS builder

ENV PROJECT_NAME="apicast-operator"
ENV OUTPUT_DIR="/tmp/_output"
ENV BINARY_NAME="${PROJECT_NAME}"
ENV REPO_PATH="github.com/3scale"
ENV REPO_SRC_PATH="src/${REPO_PATH}"
ENV BUILD_PATH="${REPO_PATH}/${PROJECT_NAME}/cmd/manager"

WORKDIR ${REMOTE_SOURCE_DIR}/app

# Copy the upstream sources from cachito integration
COPY $REMOTE_SOURCE $REMOTE_SOURCE_DIR

USER root

RUN mkdir -p ${OUTPUT_DIR}
RUN echo "build path: ${BUILD_PATH}"
RUN echo "output path: ${OUTPUT_DIR}"

# We enable go-toolset-1.13 because it sets/modifies some environment
# variables like PATH. If we don't do this the go binary cannot be found
RUN scl enable go-toolset-1.13 "GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o ${OUTPUT_DIR}/${PROJECT_NAME} ${BUILD_PATH}"

# Copy licenses
RUN mkdir ${OUTPUT_DIR}/licenses/
RUN cp "./licenses.xml" "${OUTPUT_DIR}/licenses/"

FROM ubi7-minimal:7.9-301
# Labels consumed by Red Hat build service
LABEL com.redhat.component="3scale-apicast-operator-container" \
      name="3scale-amp2/apicast-rhel7-operator" \
    version="1.13.0"\
      summary="APIcast operator container image" \
      description="APIcast Operator provides an easy way to install a 3scale APIcast self-managed solution, providing configurability options at the time of installation." \
      io.k8s.display-name="APIcast Operator" \
      io.openshift.expose-services="" \
      io.openshift.tags="3scale, apicast, api, gateway, openresty, api-gateway" \
      maintainer="msoriano@redhat.com"


ENV OPERATOR_BINARY_NAME="apicast-operator" \
  USER_UID=1001 \
  USER_NAME=apicast-operator

USER root

# install operator binary
COPY --from=builder /tmp/_output/${OPERATOR_BINARY_NAME} /usr/local/bin/
RUN chown ${USER_UID} /usr/local/bin/${OPERATOR_BINARY_NAME}

COPY user_setup /usr/local/bin
COPY entrypoint /usr/local/bin
RUN  /usr/local/bin/user_setup

# Install licenses
ENV LICENSES_DIR="/root/licenses/apicast-operator/"
RUN mkdir -p ${LICENSES_DIR}
COPY --from=builder /tmp/_output/licenses/licenses.xml ${LICENSES_DIR}
RUN chown ${USER_UID} ${LICENSES_DIR}/licenses.xml

ENTRYPOINT ["/usr/local/bin/entrypoint"]

USER ${USER_UID}
