mirror of
https://git.proxmox.com/git/mirror_frr
synced 2026-01-04 20:16:01 +00:00
Dockerfile: Move to project root and combine RUNs
According to https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#run `apt-get update` should always be combined with `apt-get install` in the same `RUN` statement, to avoid installation of outdated packages. Also, combine some more `RUN`s together as to avoid fewer layers. Finally, remove some comments which are superflous. Comments shouldn't describe what is done, especially when it's obvious. They should explain why something is done. Signed-off-by: Christian Franke <chris@opensourcerouting.org>
This commit is contained in:
parent
1e9c095c6f
commit
e425ee6357
66
tests/topotests/Dockerfile
Normal file
66
tests/topotests/Dockerfile
Normal file
@ -0,0 +1,66 @@
|
||||
FROM ubuntu:18.04
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y \
|
||||
autoconf \
|
||||
binutils \
|
||||
bison \
|
||||
flex \
|
||||
gdb \
|
||||
inetutils-ping \
|
||||
install-info \
|
||||
iproute2 \
|
||||
less \
|
||||
libtool \
|
||||
libjson-c-dev \
|
||||
libpython-dev \
|
||||
libreadline-dev \
|
||||
libc-ares-dev \
|
||||
man \
|
||||
mininet \
|
||||
pkg-config \
|
||||
python-pip \
|
||||
python-sphinx \
|
||||
rsync \
|
||||
tcpdump \
|
||||
texinfo \
|
||||
tmux \
|
||||
valgrind \
|
||||
vim \
|
||||
x11-xserver-utils \
|
||||
xterm \
|
||||
&& pip install \
|
||||
exabgp==3.4.17 \
|
||||
ipaddr \
|
||||
pytest
|
||||
|
||||
RUN groupadd -r -g 92 frr \
|
||||
&& groupadd -r -g 85 frrvty \
|
||||
&& useradd -c "FRRouting suite" \
|
||||
-d /var/run/frr \
|
||||
-g frr \
|
||||
-G frrvty \
|
||||
-r \
|
||||
-s /sbin/nologin \
|
||||
frr \
|
||||
&& useradd -d /var/run/exabgp/ \
|
||||
-s /bin/false \
|
||||
exabgp
|
||||
|
||||
# Configure coredumps
|
||||
RUN echo "" >> /etc/security/limits.conf; \
|
||||
echo "* soft core unlimited" >> /etc/security/limits.conf; \
|
||||
echo "root soft core unlimited" >> /etc/security/limits.conf; \
|
||||
echo "* hard core unlimited" >> /etc/security/limits.conf; \
|
||||
echo "root hard core unlimited" >> /etc/security/limits.conf
|
||||
|
||||
# Copy run scripts to facilitate users wanting to run the tests
|
||||
COPY docker/ /opt/topotests
|
||||
WORKDIR /root
|
||||
ENV PATH "$PATH:/opt/topotests"
|
||||
|
||||
RUN echo "cat /opt/topotests/motd.txt" >> /root/.profile && \
|
||||
echo "export PS1='(topotests) $PS1'" >> /root/.profile
|
||||
|
||||
ENTRYPOINT [ "bash", "/opt/topotests/entrypoint.sh" ]
|
||||
@ -1,55 +0,0 @@
|
||||
FROM ubuntu:18.04
|
||||
|
||||
# Update system repos
|
||||
RUN DEBIAN_FRONTEND=noninteractive apt update
|
||||
|
||||
# Install FRR dependencies
|
||||
RUN DEBIAN_FRONTEND=noninteractive apt install -y \
|
||||
autoconf binutils bison flex libtool libjson-c-dev \
|
||||
libpython-dev libreadline-dev libc-ares-dev python-sphinx \
|
||||
install-info pkg-config texinfo
|
||||
|
||||
# Install useful tools for debugging
|
||||
RUN DEBIAN_FRONTEND=noninteractive apt install -y \
|
||||
gdb inetutils-ping iproute2 valgrind
|
||||
|
||||
# Install mininet dependencies
|
||||
RUN DEBIAN_FRONTEND=noninteractive apt install -y \
|
||||
mininet python-pip && \
|
||||
pip install ipaddr pytest exabgp==3.4.17
|
||||
|
||||
# Install user utilities
|
||||
RUN DEBIAN_FRONTEND=noninteractive apt install -y \
|
||||
x11-xserver-utils xterm tmux vim tcpdump less man rsync
|
||||
|
||||
# Configure FRR users
|
||||
RUN groupadd -r -g 92 frr && \
|
||||
groupadd -r -g 85 frrvty && \
|
||||
useradd -c "FRRouting suite" -d /var/run/frr -g frr -G frrvty \
|
||||
-r -s /sbin/nologin frr
|
||||
|
||||
# Configure exabgp user.
|
||||
RUN useradd -d /var/run/exabgp/ -s /bin/false exabgp
|
||||
|
||||
# Configure coredumps.
|
||||
RUN echo "" >> /etc/security/limits.conf; \
|
||||
echo "* soft core unlimited" >> /etc/security/limits.conf; \
|
||||
echo "root soft core unlimited" >> /etc/security/limits.conf; \
|
||||
echo "* hard core unlimited" >> /etc/security/limits.conf; \
|
||||
echo "root hard core unlimited" >> /etc/security/limits.conf
|
||||
|
||||
# Copy run scripts to facilitate users wanting to run the tests
|
||||
COPY . /opt/topotests
|
||||
WORKDIR /root
|
||||
|
||||
RUN echo "cat /opt/topotests/motd.txt" >> /root/.profile && \
|
||||
echo "export PS1='(topotests) $PS1'" >> /root/.profile
|
||||
|
||||
# Configure volumes
|
||||
VOLUME [ "/root/frr", "/root/topotests" ]
|
||||
|
||||
# Add topotests script directory to path
|
||||
ENV PATH "$PATH:/opt/topotests"
|
||||
|
||||
# Use our custom entrypoint script
|
||||
ENTRYPOINT [ "bash", "/opt/topotests/entrypoint.sh" ]
|
||||
Loading…
Reference in New Issue
Block a user