sonic-buildimage/dockers/docker-snmp/Dockerfile.j2
Renuka Manavalan ba02209141
First cut image update for kubernetes support. (#5421)
* First cut image update for kubernetes support.
With this,
    1)  dockers dhcp_relay, lldp, pmon, radv, snmp, telemetry are enabled
        for kube management
        init_cfg.json configure set_owner as kube for these

    2)  Each docker's start.sh updated to call container_startup.py to register going up
          As part of this call, it registers the current owner as local/kube and its version
          The images are built with its version ingrained into image during build

    3)  Update all docker's bash script to call 'container start/stop/wait' instead of 'docker start/stop/wait'.
         For all locally managed containers, it calls docker commands, hence no change for locally managed.
        
    4)  Introduced a new ctrmgrd service, that helps with transition between owners as  kube & local and carry over any labels update from STATE-DB to API server

    5)  hostcfgd updated to handle owner change

    6) Reboot scripts are updatd to tag kube running images as local, so upon reboot they run the same image.

   7) Added kube_commands.py to handle all updates with Kubernetes API serrver -- dedicated for k8s interaction only.
2020-12-22 08:01:33 -08:00

84 lines
2.7 KiB
Django/Jinja

{% from "dockers/dockerfile-macros.j2" import install_debian_packages, install_python3_wheels, copy_files %}
FROM docker-config-engine-buster
ARG docker_container_name
ARG image_version
RUN [ -f /etc/rsyslog.conf ] && sed -ri "s/%syslogtag%/$docker_container_name#%syslogtag%/;" /etc/rsyslog.conf
# Enable -O for all Python calls
ENV PYTHONOPTIMIZE 1
# Make apt-get non-interactive
ENV DEBIAN_FRONTEND=noninteractive
# Pass the image_version to container
ENV IMAGE_VERSION=$image_version
# Update apt's cache of available packages
# Install make/gcc which is required for installing hiredis
RUN apt-get update && \
apt-get install -y \
python3-dev \
gcc \
make \
ipmitool
{% if docker_snmp_debs.strip() -%}
# Copy locally-built Debian package dependencies
{{ copy_files("debs/", docker_snmp_debs.split(' '), "/debs/") }}
# Install locally-built Debian packages and implicitly install their dependencies
{{ install_debian_packages(docker_snmp_debs.split(' ')) }}
{%- endif %}
# Fix for hiredis compilation issues for ARM
# python will throw for missing locale
RUN apt-get install -y locales
RUN locale-gen "en_US.UTF-8"
RUN dpkg-reconfigure --frontend noninteractive locales
ENV LC_CTYPE=en_US.UTF-8
RUN sed -i '/^#.* en_US.* /s/^#//' /etc/locale.gen
RUN locale-gen
# Install up-to-date version of pip
RUN pip3 install --no-cache-dir setuptools wheel
# Install pyyaml dependency for use by some plugins
# Install smbus dependency for use by some plugins
RUN python3 -m pip install --no-cache-dir \
hiredis \
pyyaml \
smbus
{% if docker_snmp_whls.strip() -%}
# Copy locally-built Python wheel dependencies
{{ copy_files("python-wheels/", docker_snmp_whls.split(' '), "/python-wheels/") }}
# Install locally-built Python wheel dependencies
{{ install_python3_wheels(docker_snmp_whls.split(' ')) }}
{% endif %}
RUN python3 -m sonic_ax_impl install
# Clean up
RUN apt-get -y purge \
python3-dev \
gcc \
make && \
apt-get clean -y && \
apt-get autoclean -y && \
apt-get autoremove -y --purge && \
find / | grep -E "__pycache__" | xargs rm -rf && \
rm -rf /debs /python-wheels ~/.cache
COPY ["start.sh", "/usr/bin/"]
COPY ["supervisord.conf", "/etc/supervisor/conf.d/"]
COPY ["*.j2", "/usr/share/sonic/templates/"]
COPY ["files/supervisor-proc-exit-listener", "/usr/bin"]
COPY ["critical_processes", "/etc/supervisor"]
# Although exposing ports is not needed for host net mode, keep it for possible bridge mode
EXPOSE 161/udp 162/udp
ENTRYPOINT ["/usr/local/bin/supervisord"]