3987cbd80a
We are moving toward building all Python packages for SONiC as wheel packages rather than Debian packages. This will also allow us to more easily transition to Python 3. Python files are now packaged in "sonic-utilities" Pyhton wheel. Data files are now packaged in "sonic-utilities-data" Debian package. **- How I did it** - Build and install sonic-utilities as a Python package - Remove explicit installation of wheel dependencies, as these will now get installed implicitly by pip when installing sonic-utilities as a wheel - Build and install new sonic-utilities-data package to install data files required by sonic-utilities applications - Update all references to sonic-utilities scripts/entrypoints to either reference the new /usr/local/bin/ location or remove absolute path entirely where applicable Submodule updates: * src/sonic-utilities aa27dd9...2244d7b (5): > Support building sonic-utilities as a Python wheel package instead of a Debian package (#1122) > [consutil] Display remote device name in show command (#1120) > [vrf] fix check state_db error when vrf moving (#1119) > [consutil] Fix issue where the ConfigDBConnector's reference is missing (#1117) > Update to make config load/reload backward compatible. (#1115) * src/sonic-ztp dd025bc...911d622 (1): > Update paths to reflect new sonic-utilities install location, /usr/local/bin/ (#19)
161 lines
6.3 KiB
Django/Jinja
161 lines
6.3 KiB
Django/Jinja
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
|
|
|
|
RUN apt-get install -y gnupg
|
|
COPY ["sonic-dev.gpg.key", "/etc/apt/"]
|
|
RUN apt-key add /etc/apt/sonic-dev.gpg.key
|
|
RUN echo "deb http://packages.microsoft.com/repos/sonic-dev/ jessie main" >> /etc/apt/sources.list
|
|
RUN apt-get update
|
|
|
|
RUN apt-get install -y net-tools \
|
|
arping \
|
|
ndisc6 \
|
|
ethtool \
|
|
tcpdump \
|
|
ifupdown \
|
|
bridge-utils \
|
|
python-ply \
|
|
libqt5core5a \
|
|
libqt5network5 \
|
|
libboost-program-options1.71.0 \
|
|
libboost-system1.71.0 \
|
|
libboost-thread1.71.0 \
|
|
libgmp10 \
|
|
libjudydebian1 \
|
|
openssh-client \
|
|
openssh-server \
|
|
libc-ares2 \
|
|
iproute2 \
|
|
grub2-common \
|
|
python-click \
|
|
python-natsort \
|
|
python-tabulate \
|
|
bash-completion \
|
|
libelf1 \
|
|
libmnl0 \
|
|
logrotate \
|
|
apt-utils \
|
|
psmisc \
|
|
tcpdump \
|
|
python-scapy \
|
|
conntrack \
|
|
iptables \
|
|
python3-pip \
|
|
jq \
|
|
python-m2crypto
|
|
|
|
# install redis-server
|
|
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 curl -o redis-server_6.0.6-1~bpo10+1_amd64.deb "https://sonicstorage.blob.core.windows.net/packages/redis/redis-server_6.0.6-1~bpo10+1_amd64.deb?sv=2015-04-05&sr=b&sig=2Ketg7BmkZEaTxR%2FgvAFVmhjn7ywdmkc7l2T2rsL57o%3D&se=2030-09-06T19%3A45%3A20Z&sp=r"
|
|
RUN dpkg -i redis-tools_6.0.6-1~bpo10+1_amd64.deb redis-server_6.0.6-1~bpo10+1_amd64.deb || apt-get install -f
|
|
RUN rm redis-tools_6.0.6-1~bpo10+1_amd64.deb redis-server_6.0.6-1~bpo10+1_amd64.deb
|
|
|
|
RUN pip install setuptools
|
|
RUN pip3 install setuptools
|
|
RUN pip install wheel
|
|
RUN pip3 install wheel
|
|
RUN pip install py2_ipaddress
|
|
RUN pip install six
|
|
RUN pip install pyroute2==0.5.3 netifaces==0.10.7
|
|
RUN pip install monotonic==1.5
|
|
RUN pip install urllib3
|
|
RUN pip install requests
|
|
RUN pip install crontab
|
|
|
|
# Install dependencies for Dynamic Port Breakout
|
|
RUN pip install xmltodict==0.12.0
|
|
RUN pip install jsondiff==1.2.0
|
|
RUN pip install ijson==2.6.1
|
|
|
|
{% if docker_sonic_vs_debs.strip() -%}
|
|
# Copy locally-built Debian package dependencies
|
|
{%- for deb in docker_sonic_vs_debs.split(' ') %}
|
|
COPY debs/{{ deb }} /debs/
|
|
{%- endfor %}
|
|
|
|
# Install locally-built Debian packages and implicitly install their dependencies
|
|
{%- for deb in docker_sonic_vs_debs.split(' ') %}
|
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /debs/{{ deb }}
|
|
{%- endfor %}
|
|
{%- endif %}
|
|
|
|
{% if docker_sonic_vs_pydebs.strip() -%}
|
|
# Copy locally-built Debian package dependencies
|
|
{%- for deb in docker_sonic_vs_pydebs.split(' ') %}
|
|
COPY python-debs/{{ deb }} /debs/
|
|
{%- endfor %}
|
|
|
|
# Install locally-built Debian packages and implicitly install their dependencies
|
|
{%- for deb in docker_sonic_vs_pydebs.split(' ') %}
|
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /debs/{{ deb }}
|
|
{%- endfor %}
|
|
{%- endif %}
|
|
|
|
{% if docker_sonic_vs_whls.strip() %}
|
|
# copy all whl PKGs first,
|
|
{% for whl in docker_sonic_vs_whls.split(' ') -%}
|
|
COPY python-wheels/{{ whl }} python-wheels/
|
|
{% endfor %}
|
|
|
|
# install PKGs after copying all PKGs to avoid dependency failure
|
|
# use py3 to find python3 package, which is forced by wheel as of now
|
|
{%- for whl in docker_sonic_vs_whls.split(' ') %}
|
|
RUN pip{% if 'py3' in whl %}3{% endif %} install python-wheels/{{ whl }}
|
|
{%- endfor %}
|
|
{% endif %}
|
|
|
|
# Clean up
|
|
RUN apt-get clean -y
|
|
RUN apt-get autoclean -y
|
|
RUN apt-get autoremove -y
|
|
RUN rm -rf /debs ~/.cache
|
|
|
|
RUN sed -ri 's/^(save .*$)/# \1/g; \
|
|
s/^daemonize yes$/daemonize no/; \
|
|
s/^logfile .*$/logfile ""/; \
|
|
s/^# syslog-enabled no$/syslog-enabled no/; \
|
|
s/^# unixsocket/unixsocket/; \
|
|
s/notify-keyspace-events ""/notify-keyspace-events AKE/; \
|
|
s/redis-server.sock/redis.sock/g; \
|
|
s/^client-output-buffer-limit pubsub [0-9]+mb [0-9]+mb [0-9]+/client-output-buffer-limit pubsub 0 0 0/ \
|
|
' /etc/redis/redis.conf
|
|
|
|
COPY ["50-default.conf", "/etc/rsyslog.d/"]
|
|
COPY ["start.sh", "orchagent.sh", "files/remove_chassisdb_config", "/usr/bin/"]
|
|
COPY ["supervisord.conf", "/etc/supervisor/conf.d/"]
|
|
COPY ["files/configdb-load.sh", "/usr/bin/"]
|
|
COPY ["files/arp_update", "/usr/bin/"]
|
|
COPY ["files/buffers_config.j2", "files/qos_config.j2", "files/arp_update_vars.j2", "/usr/share/sonic/templates/"]
|
|
COPY ["files/sonic_version.yml", "/etc/sonic/"]
|
|
COPY ["database_config.json", "/etc/default/sonic-db/"]
|
|
COPY ["hostname.j2", "/usr/share/sonic/templates/"]
|
|
COPY ["default_chassis_cfg.json", "/etc/default/sonic-db/"]
|
|
COPY ["chassis_db.py", "/usr/bin/"]
|
|
|
|
COPY ["platform.json", "/usr/share/sonic/device/x86_64-kvm_x86_64-r0/"]
|
|
COPY ["hwsku.json", "/usr/share/sonic/device/x86_64-kvm_x86_64-r0/Force10-S6000/"]
|
|
|
|
# Workaround the tcpdump issue
|
|
RUN mv /usr/sbin/tcpdump /usr/bin/tcpdump
|
|
|
|
RUN echo "docker-sonic-vs" > /etc/hostname
|
|
RUN mkdir -p /etc/quagga
|
|
RUN touch /etc/quagga/zebra.conf
|
|
|
|
# disable integrated vtysh config
|
|
RUN rm /etc/frr/frr.conf
|
|
|
|
# Create /var/warmboot/teamd folder for teammgrd
|
|
RUN mkdir -p /var/warmboot/teamd
|
|
|
|
# Set PLATFORM and HWSKU environment variables
|
|
ENV PLATFORM=x86_64-kvm_x86_64-r0
|
|
ENV HWSKU=Force10-S6000
|
|
|
|
ENTRYPOINT ["/usr/bin/supervisord"]
|