2019-06-22 13:26:23 -05:00
{ % from "dockers/dockerfile-macros.j2" import install_debian_packages, install_python_wheels, copy_files %}
2019-07-26 00:06:41 -05:00
{ % if CONFIGURED_ARCH = = "armhf" %}
FROM multiarch/debian-debootstrap:armhf-stretch
{ % elif CONFIGURED_ARCH = = "arm64" %}
FROM multiarch/debian-debootstrap:arm64-stretch
{ % else %}
2019-01-31 01:05:52 -06:00
FROM debian:stretch
2019-07-26 00:06:41 -05:00
{ % endif %}
2019-01-31 01:05:52 -06:00
# 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
2019-06-22 13:26:23 -05:00
RUN while [ -n " $( find /usr/share/doc -depth -type d -empty -print -exec rmdir { } +) " ] ; do :; done && \
rm -rf \
2019-01-31 01:05:52 -06:00
/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" ]
2019-07-26 00:06:41 -05:00
{ % 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 %}
2019-01-31 01:05:52 -06:00
COPY [ "sources.list" , "/etc/apt/sources.list" ]
2019-07-26 00:06:41 -05:00
{ % endif %}
2019-01-31 01:05:52 -06:00
COPY [ "no_install_recommend_suggest" , "/etc/apt/apt.conf.d" ]
2020-01-07 17:52:49 -06:00
COPY [ "no-check-valid-until" , "/etc/apt/apt.conf.d" ]
2019-01-31 01:05:52 -06:00
2019-06-22 13:26:23 -05:00
# Update apt cache and
# pre-install fundamental packages
RUN apt-get update && \
apt-get -y install \
2020-11-11 20:19:48 -06:00
curl \
2019-06-22 13:26:23 -05:00
less \
perl \
procps \
python \
2020-05-08 23:24:05 -05:00
python-pip \
2019-06-22 13:26:23 -05:00
vim-tiny \
2020-11-20 01:41:32 -06:00
# Install redis-tools
redis-tools= 5:5.0.3-3~bpo9+2 \
2020-04-05 15:29:34 -05:00
# common dependencies
libpython2.7 \
libdaemon0 \
libdbus-1-3 \
2020-05-21 02:22:19 -05:00
libjansson4 \
2020-01-23 18:50:17 -06:00
# ip and ifconfig utility missing in docker for arm arch
2019-07-26 00:06:41 -05:00
iproute2 \
2020-05-21 02:22:19 -05:00
net-tools \
2020-07-08 12:27:05 -05:00
# for processing json files in bash environment
2020-10-25 22:39:38 -05:00
jq \
# for sairedis zmq rpc channel
libzmq5
2019-07-26 00:06:41 -05:00
2020-09-21 04:09:50 -05:00
# Install a newer version of rsyslog from stretch-backports to support -iNONE
RUN apt-get -y -t stretch-backports install rsyslog
2020-11-11 20:19:48 -06:00
# Install redis-tools
{ % if CONFIGURED_ARCH = = "armhf" %}
RUN curl -o redis-tools_6.0.6-1~bpo10+1_armhf.deb "https://sonicstorage.blob.core.windows.net/packages/redis/redis-tools_6.0.6-1_bpo10+1_armhf.deb?sv=2015-04-05&sr=b&sig=67vHAMxsl%2BS3X1KsqhdYhakJkGdg5FKSPgU8kUiw4as%3D&se=2030-10-24T04%3A22%3A40Z&sp=r"
RUN dpkg -i redis-tools_6.0.6-1~bpo10+1_armhf.deb || apt-get install -f -y
RUN rm redis-tools_6.0.6-1~bpo10+1_armhf.deb
{ % elif CONFIGURED_ARCH = = "arm64" %}
RUN curl -o redis-tools_6.0.6-1~bpo10+1_arm64.deb "https://sonicstorage.blob.core.windows.net/packages/redis/redis-tools_6.0.6-1_bpo10+1_arm64.deb?sv=2015-04-05&sr=b&sig=GbkJV2wWln3hoz27zKi5erdk3NDKrAFrQriA97bcRCY%3D&se=2030-10-24T04%3A22%3A21Z&sp=r"
RUN dpkg -i redis-tools_6.0.6-1~bpo10+1_arm64.deb || apt-get install -f -y
RUN rm redis-tools_6.0.6-1~bpo10+1_arm64.deb
{ % else %}
RUN curl -o redis-tools_6.0.6-1~bpo10+1_amd64.deb "https://sonicstorage.blob.core.windows.net/packages/redis/redis-tools_6.0.6-1~bpo10+1_amd64.deb?sv=2015-04-05&sr=b&sig=73zbmjkf3pi%2Bn0R8Hy7CWT2EUvOAyzM5aLYJWCLySGM%3D&se=2030-09-06T19%3A44%3A59Z&sp=r"
RUN dpkg -i redis-tools_6.0.6-1~bpo10+1_amd64.deb || apt-get install -f -y
RUN rm redis-tools_6.0.6-1~bpo10+1_amd64.deb
{ % endif %}
2020-11-20 01:41:32 -06:00
# Some Python packages require setuptools (or pkg_resources, which is supplied by setuptools)
# and some require wheel
RUN pip install setuptools = = 40.8.0
RUN pip install wheel
2020-05-08 23:24:05 -05:00
# For templating
RUN pip install j2cli
2020-11-20 01:41:32 -06:00
# Install supervisor
RUN pip install supervisor>= 3.4.0
# Add support for supervisord to handle startup dependencies
RUN pip install supervisord-dependent-startup= = 1.4.0
2019-06-22 13:26:23 -05:00
RUN mkdir -p /etc/supervisor /var/log/supervisor
2019-01-31 01:05:52 -06:00
RUN apt-get -y purge \
exim4 \
exim4-base \
exim4-config \
exim4-daemon-light
{ % if docker_base_stretch_debs.strip( ) -%}
2019-06-22 13:26:23 -05:00
# Copy locally-built Debian package dependencies
{ { copy_files( "debs/" , docker_base_stretch_debs.split( ' ' ) , "/debs/" ) } }
2019-01-31 01:05:52 -06:00
# Install built Debian packages and implicitly install their dependencies
2019-06-22 13:26:23 -05:00
{ { install_debian_packages( docker_base_stretch_debs.split( ' ' ) ) } }
2019-01-31 01:05:52 -06:00
{ %- endif %}
# Clean up apt
# Remove /var/lib/apt/lists/*, could be obsoleted for derived images
2019-06-22 13:26:23 -05:00
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" ]
2019-01-31 01:05:52 -06:00
2019-11-20 09:39:49 -06:00
RUN ln /usr/bin/vim.tiny /usr/bin/vim
2019-06-22 13:26:23 -05:00
COPY [ "etc/supervisor/supervisord.conf" , "/etc/supervisor/" ]