ba7fda7fd1
Recent changes to dependencies caused the 'enum34' package to cease being installed for Python 2 in the PMon container. This broke Arista platforms, where the Arista sonic_platform package imports 'enum'. This is because on Arista devices, the sonic_platform wheel is not installed in the container. Instead, the installation directory is mounted from the host OS. However, this method doesn't ensure all dependencies are installed in the container.
76 lines
2.8 KiB
Django/Jinja
Executable File
76 lines
2.8 KiB
Django/Jinja
Executable File
{% from "dockers/dockerfile-macros.j2" import install_debian_packages, install_python_wheels, copy_files %}
|
|
FROM docker-config-engine-buster
|
|
|
|
ARG docker_container_name
|
|
RUN [ -f /etc/rsyslog.conf ] && sed -ri "s/%syslogtag%/$docker_container_name#%syslogtag%/;" /etc/rsyslog.conf
|
|
|
|
# Make apt-get non-interactive
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
# Install required packages
|
|
RUN apt-get update && \
|
|
apt-get install -y \
|
|
python-dev \
|
|
python3-dev \
|
|
ipmitool \
|
|
librrd8 \
|
|
librrd-dev \
|
|
rrdtool \
|
|
python-smbus \
|
|
ethtool \
|
|
dmidecode \
|
|
i2c-tools
|
|
|
|
# On Arista devices, the sonic_platform wheel is not installed in the container.
|
|
# Instead, the installation directory is mounted from the host OS. However, this method
|
|
# doesn't ensure all dependencies are installed in the container. So here we
|
|
# install any dependencies required by the Arista sonic_platform package.
|
|
# TODO: eliminate the need to install these explicitly.
|
|
# NOTE: Only install enum34 for Python 2, as our version of Python 3 is 3.7, which
|
|
# contains 'enum' as part of the standard library. Installing enum34 there will
|
|
# cause conflicts.
|
|
RUN pip2 install enum34
|
|
|
|
{% if docker_platform_monitor_debs.strip() -%}
|
|
# Copy locally-built Debian package dependencies
|
|
{{ copy_files("debs/", docker_platform_monitor_debs.split(' '), "/debs/") }}
|
|
|
|
# Install locally-built Debian packages and implicitly install their dependencies
|
|
{{ install_debian_packages(docker_platform_monitor_debs.split(' ')) }}
|
|
{%- endif %}
|
|
|
|
{% if docker_platform_monitor_pydebs.strip() -%}
|
|
# Copy locally-built Debian package dependencies
|
|
{{ copy_files("python-debs/", docker_platform_monitor_pydebs.split(' '), "/debs/") }}
|
|
|
|
# Install locally-built Debian packages and implicitly install their dependencies
|
|
{{ install_debian_packages(docker_platform_monitor_pydebs.split(' ')) }}
|
|
{%- endif %}
|
|
|
|
{% if docker_platform_monitor_whls.strip() -%}
|
|
# Copy locally-built Python wheel dependencies
|
|
{{ copy_files("python-wheels/", docker_platform_monitor_whls.split(' '), "/python-wheels/") }}
|
|
|
|
# Install locally-built Python wheel dependencies
|
|
{{ install_python_wheels(docker_platform_monitor_whls.split(' ')) }}
|
|
{% endif %}
|
|
|
|
# Clean up
|
|
RUN apt-get purge -y \
|
|
python-dev \
|
|
python3-dev && \
|
|
apt-get clean -y && \
|
|
apt-get autoclean -y && \
|
|
apt-get autoremove -y && \
|
|
rm -rf /debs \
|
|
/python-wheels \
|
|
~/.cache
|
|
|
|
COPY ["docker_init.sh", "lm-sensors.sh", "start.sh", "/usr/bin/"]
|
|
COPY ["docker-pmon.supervisord.conf.j2", "/usr/share/sonic/templates/"]
|
|
COPY ["ssd_tools/*", "/usr/bin/"]
|
|
COPY ["files/supervisor-proc-exit-listener", "/usr/bin"]
|
|
COPY ["critical_processes", "/etc/supervisor"]
|
|
|
|
ENTRYPOINT ["/usr/bin/docker_init.sh"]
|