f4eae5dabd
sonic-cfggen call is slow and this is taking place in the SONiC boot up process. The change uses templates to assemble all required vars into single template file. With this change, telemetry now calls once into sonic-cfggen. signed-off-by: Tamer Ahmed <tamer.ahmed@microsoft.com>
107 lines
3.5 KiB
Django/Jinja
107 lines
3.5 KiB
Django/Jinja
{% from "dockers/dockerfile-macros.j2" import install_debian_packages, install_python_wheels, copy_files %}
|
|
{% if CONFIGURED_ARCH == "armhf" %}
|
|
FROM multiarch/debian-debootstrap:armhf-buster
|
|
{% elif CONFIGURED_ARCH == "arm64" %}
|
|
FROM multiarch/debian-debootstrap:arm64-buster
|
|
{% else %}
|
|
FROM debian:buster
|
|
{% endif %}
|
|
|
|
# Clean documentation in FROM image
|
|
RUN find /usr/share/doc -depth \( -type f -o -type l \) ! -name copyright | xargs rm || true
|
|
|
|
# Clean doc directories that are empty or only contain empty directories
|
|
RUN while [ -n "$(find /usr/share/doc -depth -type d -empty -print -exec rmdir {} +)" ]; do :; done && \
|
|
rm -rf \
|
|
/usr/share/man/* \
|
|
/usr/share/groff/* \
|
|
/usr/share/info/* \
|
|
/usr/share/lintian/* \
|
|
/usr/share/linda/* \
|
|
/var/cache/man/* \
|
|
/usr/share/locale/*
|
|
|
|
# Make apt-get non-interactive
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
# Configure data sources for apt/dpkg
|
|
COPY ["dpkg_01_drop", "/etc/dpkg/dpkg.cfg.d/01_drop"]
|
|
{% if CONFIGURED_ARCH == "armhf" %}
|
|
COPY ["sources.list.armhf", "/etc/apt/sources.list"]
|
|
{% elif CONFIGURED_ARCH == "arm64" %}
|
|
COPY ["sources.list.arm64", "/etc/apt/sources.list"]
|
|
{% else %}
|
|
COPY ["sources.list", "/etc/apt/sources.list"]
|
|
{% endif %}
|
|
COPY ["no_install_recommend_suggest", "/etc/apt/apt.conf.d"]
|
|
COPY ["no-check-valid-until", "/etc/apt/apt.conf.d"]
|
|
|
|
# Update apt cache and
|
|
# pre-install fundamental packages
|
|
RUN apt-get update && \
|
|
apt-get -y install \
|
|
less \
|
|
perl \
|
|
procps \
|
|
python \
|
|
python-pip \
|
|
python3 \
|
|
python3-pip \
|
|
rsyslog \
|
|
vim-tiny \
|
|
# Install dependencies of supervisor
|
|
python-pkg-resources \
|
|
python-meld3 \
|
|
# Install redis-tools
|
|
redis-tools=5:6.0.5-1~bpo10+1 \
|
|
# common dependencies
|
|
libpython2.7 \
|
|
libdaemon0 \
|
|
libdbus-1-3 \
|
|
libjansson4 \
|
|
# ip and ifconfig utility missing in docker for arm arch
|
|
iproute2 \
|
|
net-tools \
|
|
# for arm arch: Installing j2cli dependency package MarkupSafe from source relies on weeksetuptools and wheel
|
|
python-setuptools \
|
|
python-wheel \
|
|
# for processing/handling json files in bash environment
|
|
jq
|
|
|
|
# For templating
|
|
RUN pip install j2cli
|
|
|
|
RUN mkdir -p /etc/supervisor /var/log/supervisor
|
|
|
|
RUN apt-get -y purge \
|
|
exim4 \
|
|
exim4-base \
|
|
exim4-config \
|
|
exim4-daemon-light
|
|
|
|
{% if docker_base_buster_debs.strip() -%}
|
|
# Copy locally-built Debian package dependencies
|
|
{{ copy_files("debs/", docker_base_buster_debs.split(' '), "/debs/") }}
|
|
|
|
# Install built Debian packages and implicitly install their dependencies
|
|
{{ install_debian_packages(docker_base_buster_debs.split(' ')) }}
|
|
{%- endif %}
|
|
|
|
# Add support for supervisord to handle startup dependencies
|
|
RUN pip install supervisord-dependent-startup==1.4.0
|
|
|
|
# Clean up apt
|
|
# Remove /var/lib/apt/lists/*, could be obsoleted for derived images
|
|
RUN apt-get clean -y && \
|
|
apt-get autoclean -y && \
|
|
apt-get autoremove -y && \
|
|
rm -rf /var/lib/apt/lists/* /tmp/*
|
|
|
|
COPY ["etc/rsyslog.conf", "/etc/rsyslog.conf"]
|
|
COPY ["etc/rsyslog.d/*", "/etc/rsyslog.d/"]
|
|
COPY ["root/.vimrc", "/root/.vimrc"]
|
|
|
|
RUN ln /usr/bin/vim.tiny /usr/bin/vim
|
|
|
|
COPY ["etc/supervisor/supervisord.conf", "/etc/supervisor/"]
|