Dockerfile: pin centos & epel repo versions
Avoid different outcomes every time we run "docker build": - Use centos 7.8 base image - Use fixed versions of CentOS & EPEL repos - Pin mock & its dependencies to 1.4.16 - Don't install unnecessary packages - Don't install unnecessary/conflicting repo files Change-Id: Ic9a52f373809ed66a0e61675f4d6276fd62e6fa0 Signed-off-by: Davlet Panech <davlet.panech@windriver.com>
This commit is contained in:
parent
1a337c07f9
commit
78263e8784
58
Dockerfile
58
Dockerfile
@ -13,7 +13,7 @@
|
|||||||
# Copyright (C) 2019 Intel Corporation
|
# Copyright (C) 2019 Intel Corporation
|
||||||
#
|
#
|
||||||
|
|
||||||
FROM centos:7.4.1708
|
FROM centos:7.8.2003
|
||||||
|
|
||||||
# Proxy configuration
|
# Proxy configuration
|
||||||
#ENV http_proxy "http://your.actual_http_proxy.com:your_port"
|
#ENV http_proxy "http://your.actual_http_proxy.com:your_port"
|
||||||
@ -24,27 +24,43 @@ FROM centos:7.4.1708
|
|||||||
# echo -e "export http_proxy=$http_proxy\nexport https_proxy=$https_proxy\n\
|
# echo -e "export http_proxy=$http_proxy\nexport https_proxy=$https_proxy\n\
|
||||||
#export ftp_proxy=$ftp_proxy" >> /root/.bashrc
|
#export ftp_proxy=$ftp_proxy" >> /root/.bashrc
|
||||||
|
|
||||||
RUN echo "http_caching=packages" >> /etc/yum.conf
|
|
||||||
|
|
||||||
# username you will docker exec into the container as.
|
# username you will docker exec into the container as.
|
||||||
# It should NOT be your host username so you can easily tell
|
# It should NOT be your host username so you can easily tell
|
||||||
# if you are in our out of the container.
|
# if you are in our out of the container.
|
||||||
ARG MYUNAME=builder
|
ARG MYUNAME=builder
|
||||||
ARG MYUID=1000
|
ARG MYUID=1000
|
||||||
|
# CentOS & EPEL URLs that match the base image
|
||||||
|
# Override these with --build-arg if you have a mirror
|
||||||
|
ARG CENTOS_7_8_URL=http://mirror.centos.org/centos/7.8.2003
|
||||||
|
ARG EPEL_7_8_URL=https://archives.fedoraproject.org/pub/archive/epel/7.2020-04-20
|
||||||
|
|
||||||
ENV container=docker
|
ENV container=docker
|
||||||
|
|
||||||
|
# Lock down centos & epel repos
|
||||||
|
RUN rm -f /etc/yum.repos.d/*
|
||||||
|
COPY toCOPY/yum.repos.d/*.repo /etc/yum.repos.d/
|
||||||
|
COPY centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-EPEL-7 /etc/pki/rpm-gpg/
|
||||||
|
RUN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY* && \
|
||||||
|
echo "http_caching=packages" >> /etc/yum.conf && \
|
||||||
|
# yum variables must be in lower case ; \
|
||||||
|
echo "$CENTOS_7_8_URL" >/etc/yum/vars/centos_7_8_url && \
|
||||||
|
echo "$EPEL_7_8_URL" >/etc/yum/vars/epel_7_8_url && \
|
||||||
|
# disable fastestmirror plugin because we are not using mirrors ; \
|
||||||
|
# FIXME: use a mirrorlist URL for centos/vault/epel archives. I couldn't find one.
|
||||||
|
sed -i 's/enabled=1/enabled=0/' /etc/yum/pluginconf.d/fastestmirror.conf && \
|
||||||
|
yum clean all && \
|
||||||
|
yum makecache && \
|
||||||
|
yum install -y deltarpm
|
||||||
|
|
||||||
|
# Without this, init won't start the enabled services and exec'ing and starting
|
||||||
|
# them reports "Failed to get D-Bus connection: Operation not permitted".
|
||||||
|
VOLUME /run /tmp
|
||||||
|
|
||||||
# Download required dependencies by mirror/build processes.
|
# Download required dependencies by mirror/build processes.
|
||||||
# Notice there are 3 invocations to yum package manage.
|
|
||||||
# 1) Enable EPEL repository.
|
|
||||||
# 2) Download required packages.
|
|
||||||
# 3) Clean yum cache.
|
|
||||||
RUN groupadd -g 751 cgts && \
|
RUN groupadd -g 751 cgts && \
|
||||||
echo "mock:x:751:root" >> /etc/group && \
|
echo "mock:x:751:root" >> /etc/group && \
|
||||||
echo "mockbuild:x:9001:" >> /etc/group && \
|
echo "mockbuild:x:9001:" >> /etc/group && \
|
||||||
yum install -y epel-release && \
|
|
||||||
yum install -y anaconda \
|
yum install -y anaconda \
|
||||||
anaconda-help \
|
|
||||||
anaconda-runtime \
|
anaconda-runtime \
|
||||||
autoconf-archive \
|
autoconf-archive \
|
||||||
autogen \
|
autogen \
|
||||||
@ -55,6 +71,7 @@ RUN groupadd -g 751 cgts && \
|
|||||||
bison \
|
bison \
|
||||||
cpanminus \
|
cpanminus \
|
||||||
createrepo \
|
createrepo \
|
||||||
|
createrepo_c \
|
||||||
deltarpm \
|
deltarpm \
|
||||||
docker-client \
|
docker-client \
|
||||||
expat-devel \
|
expat-devel \
|
||||||
@ -71,7 +88,8 @@ RUN groupadd -g 751 cgts && \
|
|||||||
lighttpd-mod_geoip \
|
lighttpd-mod_geoip \
|
||||||
net-tools \
|
net-tools \
|
||||||
mkisofs \
|
mkisofs \
|
||||||
mock \
|
http://mirror.starlingx.cengn.ca/mirror/centos/epel/dl.fedoraproject.org/pub/epel/7/x86_64/Packages/m/mock-1.4.16-1.el7.noarch.rpm \
|
||||||
|
http://mirror.starlingx.cengn.ca/mirror/centos/epel/dl.fedoraproject.org/pub/epel/7/x86_64/Packages/m/mock-core-configs-31.6-1.el7.noarch.rpm \
|
||||||
mongodb \
|
mongodb \
|
||||||
mongodb-server \
|
mongodb-server \
|
||||||
pax \
|
pax \
|
||||||
@ -98,11 +116,9 @@ RUN groupadd -g 751 cgts && \
|
|||||||
sudo \
|
sudo \
|
||||||
systemd \
|
systemd \
|
||||||
syslinux \
|
syslinux \
|
||||||
syslinux-utils \
|
|
||||||
udisks2 \
|
udisks2 \
|
||||||
vim-enhanced \
|
vim-enhanced \
|
||||||
wget \
|
wget
|
||||||
yumdownloader
|
|
||||||
|
|
||||||
# This image requires a set of scripts and helpers
|
# This image requires a set of scripts and helpers
|
||||||
# for working correctly, in this section they are
|
# for working correctly, in this section they are
|
||||||
@ -218,10 +234,6 @@ RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == system
|
|||||||
rm -f /lib/systemd/system/basic.target.wants/*;\
|
rm -f /lib/systemd/system/basic.target.wants/*;\
|
||||||
rm -f /lib/systemd/system/anaconda.target.wants/*
|
rm -f /lib/systemd/system/anaconda.target.wants/*
|
||||||
|
|
||||||
# Without this, init won't start the enabled services and exec'ing and starting
|
|
||||||
# them reports "Failed to get D-Bus connection: Operation not permitted".
|
|
||||||
VOLUME /run /tmp
|
|
||||||
|
|
||||||
RUN useradd -r -u $MYUID -g cgts -m $MYUNAME && \
|
RUN useradd -r -u $MYUID -g cgts -m $MYUNAME && \
|
||||||
ln -s /home/$MYUNAME/.ssh /mySSH && \
|
ln -s /home/$MYUNAME/.ssh /mySSH && \
|
||||||
rsync -av /etc/skel/ /home/$MYUNAME/
|
rsync -av /etc/skel/ /home/$MYUNAME/
|
||||||
@ -239,18 +251,6 @@ RUN chown $MYUNAME /home/$MYUNAME && \
|
|||||||
runuser -u $MYUNAME -- git config --global user.name $MYUNAME && \
|
runuser -u $MYUNAME -- git config --global user.name $MYUNAME && \
|
||||||
runuser -u $MYUNAME -- git config --global color.ui false
|
runuser -u $MYUNAME -- git config --global color.ui false
|
||||||
|
|
||||||
# Customizations for mirror creation
|
|
||||||
RUN rm /etc/yum.repos.d/CentOS-Sources.repo
|
|
||||||
RUN rm /etc/yum.repos.d/epel.repo
|
|
||||||
COPY centos-mirror-tools/yum.repos.d/* /etc/yum.repos.d/
|
|
||||||
COPY centos-mirror-tools/rpm-gpg-keys/* /etc/pki/rpm-gpg/
|
|
||||||
|
|
||||||
# Import GPG keys
|
|
||||||
RUN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
|
|
||||||
|
|
||||||
# Try to continue a yum command even if a StarlingX repo is unavailable.
|
|
||||||
RUN yum-config-manager --setopt=StarlingX\*.skip_if_unavailable=1 --save
|
|
||||||
|
|
||||||
# When we run 'init' below, it will run systemd, and systemd requires RTMIN+3
|
# When we run 'init' below, it will run systemd, and systemd requires RTMIN+3
|
||||||
# to exit cleanly. By default, docker stop uses SIGTERM, which systemd ignores.
|
# to exit cleanly. By default, docker stop uses SIGTERM, which systemd ignores.
|
||||||
STOPSIGNAL RTMIN+3
|
STOPSIGNAL RTMIN+3
|
||||||
|
16
toCOPY/yum.repos.d/centos.repo
Normal file
16
toCOPY/yum.repos.d/centos.repo
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# centos_7_8_url must be defined in /etc/yum/vars/
|
||||||
|
|
||||||
|
[centos-os]
|
||||||
|
name=centos-os
|
||||||
|
baseurl=$centos_7_8_url/os/$basearch/
|
||||||
|
enabled=1
|
||||||
|
gpgcheck=1
|
||||||
|
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
|
||||||
|
|
||||||
|
[centos-extras]
|
||||||
|
name=centos-extras
|
||||||
|
baseurl=$centos_7_8_url/extras/$basearch/
|
||||||
|
enabled=1
|
||||||
|
gpgcheck=1
|
||||||
|
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
|
||||||
|
|
10
toCOPY/yum.repos.d/epel.repo
Normal file
10
toCOPY/yum.repos.d/epel.repo
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# epel_7_8_url must be defined in /etc/yum/vars/
|
||||||
|
|
||||||
|
[epel]
|
||||||
|
name=epel
|
||||||
|
baseurl=$EPEL_7_8_URL/$basearch/
|
||||||
|
failovermethod=priority
|
||||||
|
enabled=1
|
||||||
|
gpgcheck=1
|
||||||
|
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
|
||||||
|
|
Loading…
Reference in New Issue
Block a user