FROM registry.access.redhat.com/ubi7/ubi-minimal:7.8-237

RUN echo "[centos]" > /etc/yum.repos.d/centos.repo \
	&& echo "Name=centos " >> /etc/yum.repos.d/centos.repo \
	&& echo "baseurl=http://mirror.centos.org/centos/7/os/x86_64/" >> /etc/yum.repos.d/centos.repo \
	&& echo "gpgcheck=0 " >> /etc/yum.repos.d/centos.repo \
	&& echo "enabled=1 " >> /etc/yum.repos.d/centos.repo

RUN microdnf -y update \
	&& microdnf -y install \
		hostname \
		openssl \
		numactl \
		shadow-utils \
	&& rm -rf /var/lib/apt/lists/* \
	&& microdnf clean all

# install jq
COPY vendor/external-deps/jq-linux64 /usr/local/bin/jq
RUN chmod +x /usr/local/bin/jq

# grab gosu for easy step-down from root (https://github.com/tianon/gosu/releases)
ENV GOSU_VERSION 1.11
# grab "js-yaml" for parsing mongod's YAML config files (https://github.com/nodeca/js-yaml/releases)
ENV JSYAML_VERSION 3.13.0

COPY vendor/external-deps/gosu-amd64 /usr/local/bin/gosu
COPY vendor/external-deps/gosu-amd64.asc /usr/local/bin/gosu.asc
COPY vendor/external-deps/js-yaml.js /js-yaml.js

RUN set -ex; \
	rm -rf /var/lib/apt/lists/*; \
	dpkgArch=amd64; \
	export GNUPGHOME="$(mktemp -d)"; \
	gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \
	gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \
	command -v gpgconf && gpgconf --kill all || :; \
	rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \
	chmod +x /usr/local/bin/gosu; \
	gosu nobody true

FROM registry.access.redhat.com/rhscl/mongodb-36-rhel7:latest

ARG VCS_REF
ARG VCS_URL
ARG IMAGE_NAME
ARG IMAGE_DISPLAY_NAME
ARG IMAGE_MAINTAINER
ARG IMAGE_VENDOR
ARG IMAGE_VERSION
ARG IMAGE_DESCRIPTION
ARG IMAGE_SUMMARY
ARG IMAGE_OPENSHIFT_TAGS
ARG ARCH

LABEL org.label-schema.vendor="Red Hat" \
      org.label-schema.name="$IMAGE_NAME" \
      org.label-schema.description="$IMAGE_DESCRIPTION" \
      org.label-schema.vcs-ref=$VCS_REF \
      org.label-schema.vcs-url=$VCS_URL \
      org.label-schema.license="Red Hat Advanced Cluster Management for Kubernetes EULA" \
      org.label-schema.schema-version="1.0" \
      name="$IMAGE_NAME" \
      maintainer="$IMAGE_MAINTAINER" \
      vendor="$IMAGE_VENDOR" \
      version="$IMAGE_VERSION" \
      release="$VCS_REF" \
      summary="$IMAGE_DESCRIPTION" \
      description="$IMAGE_DESCRIPTION" \
      io.k8s.display-name="$IMAGE_DISPLAY_NAME" \
      io.k8s.description="$IMAGE_DESCRIPTION" \
      io.openshift.tags="$IMAGE_OPENSHIFT_TAGS"

RUN mkdir -p /opt/app-root/src/bin /var/lib/mongodb/data/db /var/lib/mongodb/data/configdb

# have openssl to generate certs
COPY --from=0 /usr/bin/openssl /opt/app-root/src/bin
COPY --from=0 /usr/local/bin/jq /opt/app-root/src/bin
COPY --from=0 /usr/local/bin/gosu /opt/app-root/src/bin
COPY --from=0 /js-yaml.js /var/lib/mongodb

COPY docker-entrypoint.sh /opt/app-root/src/bin/

ENTRYPOINT ["docker-entrypoint.sh"]

EXPOSE 27017
CMD ["mongod"]

# mongo commands are not in /usr/bin or /usr/local/bin. so need to set the followings
ENV PATH /opt/rh/rh-mongodb36/root/usr/bin:/opt/rh/rh-mongodb36/root/usr/sbin:/opt/app-root/src/bin:/opt/app-root/bin:$PATH
ENV LD_LIBRARY_PATH /opt/rh/rh-mongodb36/root/usr/lib64
ENV LIBRARY_PATH /opt/rh/rh-mongodb36/root/usr/lib64
