Skip to content

Commit

Permalink
Split dockerfile in two images
Browse files Browse the repository at this point in the history
The process of building LAVA is hard to maintain.
But since we need to be able to go back in time
(or just stay longer with a specific version)
we need a way to keep a LAVA version.
For achieving this, we build a minimal image with just LAVA
and tag it with the version of LAVA inside.
  • Loading branch information
montjoie committed Jul 25, 2018
1 parent baf6809 commit b8f5611
Show file tree
Hide file tree
Showing 13 changed files with 105 additions and 112 deletions.
56 changes: 56 additions & 0 deletions lava-master-base/Dockerfile
@@ -0,0 +1,56 @@
FROM bitnami/minideb:stretch

RUN echo "deb http://deb.debian.org/debian/ stretch-backports main" >> /etc/apt/sources.list

RUN apt-get update

# Install debian packages used by the container
# Configure apache to run the lava server
# Log the hostname used during install for the slave name
RUN echo 'lava-server lava-server/instance-name string lava-docker-instance' | debconf-set-selections \
&& echo 'locales locales/locales_to_be_generated multiselect C.UTF-8 UTF-8, en_US.UTF-8 UTF-8 ' | debconf-set-selections \
&& echo 'locales locales/default_environment_locale select en_US.UTF-8' | debconf-set-selections

# e2fsprogs is for libguestfs
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install \
locales \
postgresql \
screen \
sudo \
wget \
e2fsprogs \
gnupg \
vim

RUN wget http://images.validation.linaro.org/production-repo/production-repo.key.asc \
&& apt-key add production-repo.key.asc \
&& echo 'deb http://images.validation.linaro.org/production-repo/ stretch-backports main' > /etc/apt/sources.list.d/lava.list \
&& apt-get clean && apt-get update

RUN service postgresql start \
&& DEBIAN_FRONTEND=noninteractive apt-get -y install lava \
&& sudo -u postgres psql lavaserver -c "DELETE FROM lava_scheduler_app_worker WHERE lava_scheduler_app_worker.hostname = 'example.com';" \
&& service postgresql stop

RUN a2enmod proxy \
&& a2enmod proxy_http \
&& a2dissite 000-default \
&& a2ensite lava-server

# Add services helper utilities to start and stop LAVA
COPY scripts/stop.sh .
COPY scripts/start.sh .
COPY scripts/lava-logs /etc/init.d/
RUN chmod 755 /etc/init.d/lava-logs
COPY scripts/lava-master /etc/init.d/
RUN chmod 755 /etc/init.d/lava-master
COPY scripts/lava-slave /etc/init.d/
RUN chmod 755 /etc/init.d/lava-slave
COPY scripts/lava-server-gunicorn /etc/init.d/
RUN chmod 755 /etc/init.d/lava-server-gunicorn

RUN dpkg -l | grep lava

EXPOSE 80 3079 5555 5556

CMD /start.sh && while [ true ];do sleep 365d; done
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
68 changes: 1 addition & 67 deletions lava-master/Dockerfile
@@ -1,79 +1,13 @@
FROM bitnami/minideb:stretch

RUN echo "deb http://ftp.fr.debian.org/debian/ stretch-backports main" >> /etc/apt/sources.list

RUN apt-get update

# Install debian packages used by the container
# Configure apache to run the lava server
# Log the hostname used during install for the slave name
RUN echo 'lava-server lava-server/instance-name string lava-docker-instance' | debconf-set-selections \
&& echo 'locales locales/locales_to_be_generated multiselect C.UTF-8 UTF-8, en_US.UTF-8 UTF-8 ' | debconf-set-selections \
&& echo 'locales locales/default_environment_locale select en_US.UTF-8' | debconf-set-selections

# e2fsprogs is for libguestfs
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install \
locales \
postgresql \
screen \
sudo \
wget \
e2fsprogs \
gnupg \
vim

RUN wget http://images.validation.linaro.org/production-repo/production-repo.key.asc \
&& apt-key add production-repo.key.asc \
&& echo 'deb http://images.validation.linaro.org/production-repo/ stretch-backports main' > /etc/apt/sources.list.d/lava.list \
&& apt-get clean && apt-get update

RUN DEBIAN_FRONTEND=noninteractive apt-get -y install \
qemu-system \
qemu-system-arm \
qemu-system-i386 \
ser2net \
u-boot-tools \
python-setproctitle

RUN if [ "$(uname -m)" = "x86_64" -o "$(uname -m)" = "x86" ] ;then apt-get -y install qemu-kvm ; fi

#RUN service postgresql start \
# && DEBIAN_FRONTEND=noninteractive apt-get -y install \
# lava \
# && /stop.sh

# Install latest
COPY scripts/build-lava /
RUN bash /build-lava lava-dispatcher 2018.4 2018.4-1
RUN /etc/init.d/postgresql start && \
bash /build-lava lava-server 2018.4 2018.4-1 && \
/etc/init.d/postgresql stop
FROM baylibre/lava-master-base:latest

COPY backup /

RUN a2enmod proxy \
&& a2enmod proxy_http \
&& a2dissite 000-default \
&& a2ensite lava-server

COPY configs/tftpd-hpa /etc/default/tftpd-hpa

RUN git clone https://github.com/BayLibre/lava-healthchecks.git
RUN cp lava-healthchecks/health-checks/* /etc/lava-server/dispatcher-config/health-checks/
COPY health-checks/* /etc/lava-server/dispatcher-config/health-checks/

# Add services helper utilities to start and stop LAVA
COPY scripts/stop.sh .
COPY scripts/start.sh .
COPY scripts/lava-logs /etc/init.d/
RUN chmod 755 /etc/init.d/lava-logs
COPY scripts/lava-master /etc/init.d/
RUN chmod 755 /etc/init.d/lava-master
COPY scripts/lava-slave /etc/init.d/
RUN chmod 755 /etc/init.d/lava-slave
COPY scripts/lava-server-gunicorn /etc/init.d/
RUN chmod 755 /etc/init.d/lava-server-gunicorn

COPY devices/ /root/devices/
COPY device-types/ /root/device-types/
COPY users/ /root/lava-users/
Expand Down
44 changes: 44 additions & 0 deletions lava-slave-base/Dockerfile
@@ -0,0 +1,44 @@
FROM bitnami/minideb:stretch

RUN apt-get update

# e2fsprogs is for libguestfs
RUN \
echo 'lava-server lava-server/instance-name string lava-slave-instance' | debconf-set-selections && \
echo 'locales locales/locales_to_be_generated multiselect C.UTF-8 UTF-8, en_US.UTF-8 UTF-8 ' | debconf-set-selections && \
echo 'locales locales/default_environment_locale select en_US.UTF-8' | debconf-set-selections && \
DEBIAN_FRONTEND=noninteractive apt-get -y install \
locales \
vim \
sudo \
python-setproctitle \
tftpd-hpa \
u-boot-tools \
device-tree-compiler \
qemu-system \
qemu-system-arm \
qemu-system-i386 \
xnbd-server \
e2fsprogs

RUN if [ "$(uname -m)" = "x86_64" -o "$(uname -m)" = "x86" ] ;then apt-get -y install qemu-kvm ; fi

RUN DEBIAN_FRONTEND=noninteractive apt-get -y install wget gnupg
RUN wget http://images.validation.linaro.org/production-repo/production-repo.key.asc
RUN apt-key add production-repo.key.asc
RUN echo 'deb http://images.validation.linaro.org/production-repo/ stretch-backports main' > /etc/apt/sources.list.d/lava.list
RUN apt-get clean && apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install lava-dispatcher

COPY scripts/lava-slave /etc/init.d/
RUN chmod 755 /etc/init.d/lava-slave

# Add services helper utilities to start and stop LAVA
COPY scripts/stop.sh .
COPY scripts/start.sh .

RUN dpkg -l |grep lava

EXPOSE 69/udp 80

CMD /start.sh
File renamed without changes.
File renamed without changes.
File renamed without changes.
49 changes: 4 additions & 45 deletions lava-slave/Dockerfile
@@ -1,40 +1,6 @@
FROM bitnami/minideb:stretch
FROM baylibre/lava-slave-base:latest

RUN apt-get update

# e2fsprogs is for libguestfs
RUN \
echo 'lava-server lava-server/instance-name string lava-slave-instance' | debconf-set-selections && \
echo 'locales locales/locales_to_be_generated multiselect C.UTF-8 UTF-8, en_US.UTF-8 UTF-8 ' | debconf-set-selections && \
echo 'locales locales/default_environment_locale select en_US.UTF-8' | debconf-set-selections && \
DEBIAN_FRONTEND=noninteractive apt-get -y install \
locales \
vim \
sudo \
cu \
conmux \
python-setproctitle \
tftpd-hpa \
u-boot-tools \
device-tree-compiler \
qemu-system \
qemu-system-arm \
qemu-system-i386 \
xnbd-server \
e2fsprogs

RUN if [ "$(uname -m)" = "x86_64" -o "$(uname -m)" = "x86" ] ;then apt-get -y install qemu-kvm ; fi

# Uncomment the following for having the latest package (you need to comment all build-lava below)
#RUN DEBIAN_FRONTEND=noninteractive apt-get -y install wget gnupg \
# && wget http://images.validation.linaro.org/production-repo/production-repo.key.asc \
# && apt-key add production-repo.key.asc \
# && echo 'deb http://images.validation.linaro.org/production-repo/ stretch-backports main' > /etc/apt/sources.list.d/lava.list \
# && apt-get clean && apt-get update
#RUN DEBIAN_FRONTEND=noninteractive apt-get -y install lava-dispatcher

COPY scripts/build-lava /
RUN sh /build-lava lava-dispatcher 2018.4 2018.4-1
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install cu conmux

COPY configs/lava-slave /etc/lava-dispatcher/lava-slave

Expand All @@ -44,8 +10,8 @@ COPY scripts/cu-loop /usr/local/bin/
COPY conmux/ /etc/conmux/

# Caution to not use any port between the Linux dynamic port range: 32768-60999
RUN sed -i 's,XNBD_PORT_RANGE_MIN.*,XNBD_PORT_RANGE_MIN=61950,' /usr/lib/python3/dist-packages/lava_dispatcher/utils/constants.py
RUN sed -i 's,XNBD_PORT_RANGE_MAX.*,XNBD_PORT_RANGE_MAX=62000,' /usr/lib/python3/dist-packages/lava_dispatcher/utils/constants.py
RUN find /usr/lib/python3/dist-packages/ -iname constants.py | xargs sed -i 's,XNBD_PORT_RANGE_MIN.*,XNBD_PORT_RANGE_MIN=61950,'
RUN find /usr/lib/python3/dist-packages/ -iname constants.py | xargs sed -i 's,XNBD_PORT_RANGE_MAX.*,XNBD_PORT_RANGE_MAX=62000,'

#conmux need cu >= 1.07-24 See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=336996
RUN echo "deb http://debian.proxad.net/debian/ testing main" >> /etc/apt/sources.list.d/testing.list
Expand All @@ -56,13 +22,6 @@ RUN rm /etc/apt/sources.list.d/testing.list
RUN apt-get -y install ser2net
COPY ser2net.conf /etc

COPY scripts/lava-slave /etc/init.d/
RUN chmod 755 /etc/init.d/lava-slave

# Add services helper utilities to start and stop LAVA
COPY scripts/stop.sh .
COPY scripts/start.sh .

# lava-cli dependencies
RUN apt-get -y install python3-setuptools python3-dev python3-zmq
RUN git clone https://git.linaro.org/lava/lavacli.git /root/lavacli && cd /root/lavacli && git checkout v0.7 && python3 setup.py install
Expand Down

0 comments on commit b8f5611

Please sign in to comment.