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:
Christian Franke 2018-10-17 18:27:35 +02:00
parent 1e9c095c6f
commit e425ee6357
2 changed files with 66 additions and 55 deletions

View 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" ]

View File

@ -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" ]