diff --git a/docker-compose/Dockerfile_FOD b/docker-compose/Dockerfile_FOD index bb1b92086c19d809edaac738f1046cca00e63801..3dd455bdb33cda6101718e41f75176294ac46a70 100644 --- a/docker-compose/Dockerfile_FOD +++ b/docker-compose/Dockerfile_FOD @@ -6,11 +6,23 @@ RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \ dpkg-reconfigure --frontend=noninteractive locales && \ update-locale LANG=en_US.UTF-8 ENV LANG en_US.UTF-8 -COPY docker-compose/fod_setup_environment.sh /opt/setup_environment.sh -RUN mkdir -p /var/run/supervisor RUN apt-get update -y && apt-get -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' --assume-yes -fuy dist-upgrade RUN apt-get install -y git less man make gcc strace ltrace lsof file vim tshark tcpdump curl wget net-tools sudo psutils procps iptables iputils-ping iputils-tracepath hping3 iproute2 supervisor RUN useradd exabgp +RUN mkdir -p /var/run/supervisor /opt/FOD WORKDIR /opt/FOD EXPOSE 8000 + +# build step1 (exploit docker build cache, only redone if ./install-debian.sh changed) +COPY install-debian.sh /opt/FOD +RUN ./install-debian.sh --basesw_os --here__with_venv_relative --supervisord + +# build step2 (exploit docker build cache, only redone if ./install-debian.sh or requirements.txt changed) +COPY requirements.txt /opt/FOD +RUN ./install-debian.sh --basesw_python --here__with_venv_relative --supervisord + +# build step3 will be done in first CMD / run +#COPY docker-compose/fod_setup_environment.sh /opt/setup_environment.sh # includes tryinfo to redo step 1 + step 2 again (at least ensure everything is really up-to-date) +#COPY docker-compose/fod_setup_environment.sh /opt/setup_environment.sh # only to the least minimal adaptions necessary in the bind-mounted FOD dir are performed +COPY docker-compose/fod_setup_environment-step3.sh /opt/setup_environment.sh CMD /opt/setup_environment.sh && supervisord -c docker-compose/fod_supervisord.conf diff --git a/docker-compose/fod_setup_environment-step3.sh b/docker-compose/fod_setup_environment-step3.sh new file mode 100755 index 0000000000000000000000000000000000000000..39faa11ab3787ce6c64072c32a87cd64cbb9cc9f --- /dev/null +++ b/docker-compose/fod_setup_environment-step3.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -e +if [ -e /opt/setup_ok ]; then + exit 0 +else + cd /opt/FOD + #./install-debian.sh --here --supervisord --setup_admin_user --setup_admin_user5 admin ${ADMIN_PASS} ${ADMIN_EMAIL} ${FOD_ORG} ${FOD_ORG_NET} --exabgp ${FOD_EXABGP_LOCAL_ID} ${FOD_EXABGP_LOCAL_IP} ${FOD_EXABGP_LOCAL_AS} ${FOD_EXABGP_REMOTE_ID} ${FOD_EXABGP_REMOTE_IP} ${FOD_EXABGP_REMOTE_AS} + #./install-debian.sh --here__with_venv_relative --supervisord --setup_admin_user --setup_admin_user5 admin ${ADMIN_PASS} ${ADMIN_EMAIL} ${FOD_ORG} ${FOD_ORG_NET} --exabgp ${FOD_EXABGP_LOCAL_ID} ${FOD_EXABGP_LOCAL_IP} ${FOD_EXABGP_LOCAL_AS} ${FOD_EXABGP_REMOTE_ID} ${FOD_EXABGP_REMOTE_IP} ${FOD_EXABGP_REMOTE_AS} + ./install-debian.sh --fodproper1 --here__with_venv_relative --supervisord --setup_admin_user --setup_admin_user5 admin ${ADMIN_PASS} ${ADMIN_EMAIL} ${FOD_ORG} ${FOD_ORG_NET} --exabgp ${FOD_EXABGP_LOCAL_ID} ${FOD_EXABGP_LOCAL_IP} ${FOD_EXABGP_LOCAL_AS} ${FOD_EXABGP_REMOTE_ID} ${FOD_EXABGP_REMOTE_IP} ${FOD_EXABGP_REMOTE_AS} + /opt/FOD/venv/bin/python -m pip install exabgp + touch /opt/setup_ok +fi diff --git a/docker-compose/fod_setup_environment.sh b/docker-compose/fod_setup_environment.sh index 72502758652337563289a9bac94180b026ae704c..6eecbf4f6915afee8b5e164d8a3fa3577b6fb727 100755 --- a/docker-compose/fod_setup_environment.sh +++ b/docker-compose/fod_setup_environment.sh @@ -4,7 +4,8 @@ if [ -e /opt/setup_ok ]; then exit 0 else cd /opt/FOD - ./install-debian.sh --here --supervisord --setup_admin_user --setup_admin_user5 admin ${ADMIN_PASS} ${ADMIN_EMAIL} ${FOD_ORG} ${FOD_ORG_NET} --exabgp ${FOD_EXABGP_LOCAL_ID} ${FOD_EXABGP_LOCAL_IP} ${FOD_EXABGP_LOCAL_AS} ${FOD_EXABGP_REMOTE_ID} ${FOD_EXABGP_REMOTE_IP} ${FOD_EXABGP_REMOTE_AS} + #./install-debian.sh --here --supervisord --setup_admin_user --setup_admin_user5 admin ${ADMIN_PASS} ${ADMIN_EMAIL} ${FOD_ORG} ${FOD_ORG_NET} --exabgp ${FOD_EXABGP_LOCAL_ID} ${FOD_EXABGP_LOCAL_IP} ${FOD_EXABGP_LOCAL_AS} ${FOD_EXABGP_REMOTE_ID} ${FOD_EXABGP_REMOTE_IP} ${FOD_EXABGP_REMOTE_AS} + ./install-debian.sh --here__with_venv_relative --supervisord --setup_admin_user --setup_admin_user5 admin ${ADMIN_PASS} ${ADMIN_EMAIL} ${FOD_ORG} ${FOD_ORG_NET} --exabgp ${FOD_EXABGP_LOCAL_ID} ${FOD_EXABGP_LOCAL_IP} ${FOD_EXABGP_LOCAL_AS} ${FOD_EXABGP_REMOTE_ID} ${FOD_EXABGP_REMOTE_IP} ${FOD_EXABGP_REMOTE_AS} /opt/FOD/venv/bin/python -m pip install exabgp touch /opt/setup_ok fi