FROM centos:7.5.1804

ENV KUBE_VERSION=1.12.8 \
    DOCKER_VERSION=18.09.6 \
    CONTAINERD_VERSION=1.2.2 \
    CONTAINER_SELINUX_VERSION=2.42-1.gitad8f0f7 \
    RUNIT_VERSION=2.1.1-7

RUN yum install -yy epel-release
ADD repos/docker-ce.repo /etc/yum.repos.d/docker-ce.repo
ADD repos/kubernetes.repo /etc/yum.repos.d/kubernetes.repo
RUN curl -s https://packagecloud.io/install/repositories/imeyer/runit/script.rpm.sh | bash \
    && yum install -y runit-${RUNIT_VERSION}.el7.centos.x86_64
RUN yum install -y which nginx python2-pip wget docker-client createrepo

RUN mkdir -p /usr/share/nginx/html/v${KUBE_VERSION}/{Binaries,Images,Packages} \
    && mkdir -p /usr/share/nginx/html/charts && mkdir -p /root/.ssh
COPY config/service /etc/service
COPY config/index.html /usr/share/nginx/html/index.html
COPY config/nginx.conf /etc/nginx/conf.d/default.conf

# fetch binaries
WORKDIR /usr/share/nginx/html/v${KUBE_VERSION}/Binaries
ADD scripts/fetch-binaries.sh /usr/local/bin/fetch-binaries
ADD artifacts/binaries-list.txt /binaries-list.txt
RUN fetch-binaries

# fetch rpm packages
# TODO: container-selinux may need to update to http://vault.centos.org/centos/7.5.1804/extras/x86_64/Packages/container-selinux-2.68-1.el7.noarch.rpm
WORKDIR /usr/share/nginx/html/v${KUBE_VERSION}/Packages
RUN yum install -y --downloadonly --downloaddir=./ libselinux-python device-mapper-libs ebtables nss python-httplib2 openssl curl wget rsync bash-completion socat unzip audit \
    && yum install -y --downloadonly --downloaddir=./ docker-ce-${DOCKER_VERSION} docker-ce-cli-${DOCKER_VERSION} containerd.io-${CONTAINERD_VERSION} \
    && curl http://vault.centos.org/centos/7.4.1708/extras/x86_64/Packages/container-selinux-${CONTAINER_SELINUX_VERSION}.el7.noarch.rpm -o container-selinux-${CONTAINER_SELINUX_VERSION}.el7.noarch.rpm \
    && createrepo ./ \
    && yum clean all

# fetch docker images
WORKDIR /usr/share/nginx/html/v${KUBE_VERSION}/Images
ADD artifacts/images-list.txt /images-list.txt
ADD scripts/fetch-docker-images.sh /usr/local/bin/fetch-docker-images
ADD certs/client /certs/
RUN fetch-docker-images

# fetch charts
WORKDIR /usr/share/nginx/html/charts
ADD artifacts/charts-list.txt /charts-list.txt
ADD scripts/fetch-charts.sh /usr/local/bin/fetch-charts
RUN fetch-charts

COPY installer-core /installer
WORKDIR /installer
RUN pip install --no-cache-dir -r requirements.txt

ENV MUSEUM_PORT 9090

ENTRYPOINT ["/sbin/runsvdir", "-P", "/etc/service"]
