From d7c3806f13503baa7c5061a02b9b11c29fc3e08c Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Mon, 4 Mar 2024 12:01:15 +0100 Subject: [PATCH] Use tini as init in all containers - Print problems, e.g., segfault - Handle signals and zombie processes properly --- docker/Dockerfile.base.rhel9 | 6 ++++++ docker/Dockerfile.base.rocky | 6 ++++++ docker/Dockerfile.base.ubuntu20 | 6 ++++++ docker/Dockerfile.base.ubuntu20.cross-arm64 | 6 ++++++ docker/Dockerfile.eNB.rhel9 | 3 ++- docker/Dockerfile.eNB.rocky | 3 ++- docker/Dockerfile.eNB.ubuntu20 | 3 ++- docker/Dockerfile.gNB.aw2s.rhel9 | 3 ++- docker/Dockerfile.gNB.aw2s.rocky | 3 ++- docker/Dockerfile.gNB.aw2s.ubuntu20 | 3 ++- docker/Dockerfile.gNB.rhel9 | 3 ++- docker/Dockerfile.gNB.rocky | 3 ++- docker/Dockerfile.gNB.ubuntu20 | 3 ++- docker/Dockerfile.lteRU.rhel9 | 3 ++- docker/Dockerfile.lteRU.ubuntu20 | 3 ++- docker/Dockerfile.lteUE.rhel9 | 3 ++- docker/Dockerfile.lteUE.rocky | 3 ++- docker/Dockerfile.lteUE.ubuntu20 | 3 ++- docker/Dockerfile.nr-cuup.rhel9 | 3 ++- docker/Dockerfile.nr-cuup.rocky | 3 ++- docker/Dockerfile.nr-cuup.ubuntu20 | 3 ++- docker/Dockerfile.nrUE.rhel9 | 3 ++- docker/Dockerfile.nrUE.rocky | 3 ++- docker/Dockerfile.nrUE.ubuntu20 | 3 ++- 24 files changed, 64 insertions(+), 20 deletions(-) diff --git a/docker/Dockerfile.base.rhel9 b/docker/Dockerfile.base.rhel9 index 56b1ce7a23..7142b721fa 100644 --- a/docker/Dockerfile.base.rhel9 +++ b/docker/Dockerfile.base.rhel9 @@ -58,6 +58,12 @@ RUN rm -f /etc/rhsm-host && \ echo "/usr/local/lib" > /etc/ld.so.conf.d/local-lib.conf && \ echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf +# Add "Tini - A tiny but valid init for containers", https://github.com/krallin/tini +# it will be copied into target containers, to print exit numbers and handle signals properly +ENV TINI_VERSION v0.19.0 +ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini +RUN chmod +x /tini + # In some network environments, GIT proxy is required RUN /bin/bash -c "if [[ -v NEEDED_GIT_PROXY ]]; then git config --global http.proxy $NEEDED_GIT_PROXY; fi" diff --git a/docker/Dockerfile.base.rocky b/docker/Dockerfile.base.rocky index 42267f5d59..41210177b8 100644 --- a/docker/Dockerfile.base.rocky +++ b/docker/Dockerfile.base.rocky @@ -46,6 +46,12 @@ RUN dnf install 'dnf-command(config-manager)' -y && \ python3-pip && \ pip3 install --ignore-installed pyyaml +# Add "Tini - A tiny but valid init for containers", https://github.com/krallin/tini +# it will be copied into target containers, to print exit numbers and handle signals properly +ENV TINI_VERSION v0.19.0 +ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini +RUN chmod +x /tini + #create the WORKDIR WORKDIR /oai-ran COPY . . diff --git a/docker/Dockerfile.base.ubuntu20 b/docker/Dockerfile.base.ubuntu20 index 73fe0905d9..3434bdaa4b 100644 --- a/docker/Dockerfile.base.ubuntu20 +++ b/docker/Dockerfile.base.ubuntu20 @@ -46,6 +46,12 @@ RUN apt-get update && \ python3-pip && \ pip3 install --ignore-installed pyyaml +# Add "Tini - A tiny but valid init for containers", https://github.com/krallin/tini +# it will be copied into target containers, to print exit numbers and handle signals properly +ENV TINI_VERSION v0.19.0 +ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini +RUN chmod +x /tini + # In some network environments, GIT proxy is required RUN /bin/bash -c "if [[ -v NEEDED_GIT_PROXY ]]; then git config --global http.proxy $NEEDED_GIT_PROXY; fi" diff --git a/docker/Dockerfile.base.ubuntu20.cross-arm64 b/docker/Dockerfile.base.ubuntu20.cross-arm64 index 3f83b751af..bdd6c41774 100644 --- a/docker/Dockerfile.base.ubuntu20.cross-arm64 +++ b/docker/Dockerfile.base.ubuntu20.cross-arm64 @@ -73,6 +73,12 @@ RUN apt-get update && \ g++-9-aarch64-linux-gnu && \ apt-get clean +# Add "Tini - A tiny but valid init for containers", https://github.com/krallin/tini +# it will be copied into target containers, to print exit numbers and handle signals properly +ENV TINI_VERSION v0.19.0 +ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini +RUN chmod +x /tini + # create the WORKDIR WORKDIR /oai-ran COPY . . diff --git a/docker/Dockerfile.eNB.rhel9 b/docker/Dockerfile.eNB.rhel9 index 7883f8560a..191c8eb2b5 100644 --- a/docker/Dockerfile.eNB.rhel9 +++ b/docker/Dockerfile.eNB.rhel9 @@ -112,5 +112,6 @@ WORKDIR /opt/oai-enb # 36422 --> X2C, SCTP/UDP EXPOSE 2152/udp 36412/udp 36422/udp -ENTRYPOINT ["/opt/oai-enb/bin/entrypoint.sh"] +COPY --from=enb-base /tini /tini +ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-enb/bin/entrypoint.sh"] CMD ["/opt/oai-enb/bin/lte-softmodem", "-O", "/opt/oai-enb/etc/enb.conf"] diff --git a/docker/Dockerfile.eNB.rocky b/docker/Dockerfile.eNB.rocky index 5bd3aa8458..51705f0e7b 100644 --- a/docker/Dockerfile.eNB.rocky +++ b/docker/Dockerfile.eNB.rocky @@ -122,5 +122,6 @@ WORKDIR /opt/oai-enb # 36422 --> X2C, SCTP/UDP EXPOSE 2152/udp 36412/udp 36422/udp -ENTRYPOINT ["/opt/oai-enb/bin/entrypoint.sh"] +COPY --from=enb-base /tini /tini +ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-enb/bin/entrypoint.sh"] CMD ["/opt/oai-enb/bin/lte-softmodem", "-O", "/opt/oai-enb/etc/enb.conf"] diff --git a/docker/Dockerfile.eNB.ubuntu20 b/docker/Dockerfile.eNB.ubuntu20 index 2f10bda9ef..73a96dac62 100644 --- a/docker/Dockerfile.eNB.ubuntu20 +++ b/docker/Dockerfile.eNB.ubuntu20 @@ -112,5 +112,6 @@ EXPOSE 2152/udp 36412/udp 36422/udp #EXPOSE 50000/udp # IF5 / ORI (control) #EXPOSE 50001/udp # IF5 / ECPRI (data) -ENTRYPOINT ["/opt/oai-enb/bin/entrypoint.sh"] +COPY --from=enb-base /tini /tini +ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-enb/bin/entrypoint.sh"] CMD ["/opt/oai-enb/bin/lte-softmodem", "-O", "/opt/oai-enb/etc/enb.conf"] diff --git a/docker/Dockerfile.gNB.aw2s.rhel9 b/docker/Dockerfile.gNB.aw2s.rhel9 index 863f126be6..0885a9962d 100644 --- a/docker/Dockerfile.gNB.aw2s.rhel9 +++ b/docker/Dockerfile.gNB.aw2s.rhel9 @@ -86,5 +86,6 @@ RUN ln -s /usr/local/lib/libaw2sori_transpro.so /usr/local/lib/libthirdparty_tra WORKDIR /opt/oai-gnb-aw2s -ENTRYPOINT ["/opt/oai-gnb-aw2s/bin/entrypoint.sh"] +COPY --from=gnb-base /tini /tini +ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-gnb-aw2s/bin/entrypoint.sh"] CMD ["/opt/oai-gnb-aw2s/bin/nr-softmodem", "-O", "/opt/oai-gnb-aw2s/etc/gnb.conf"] diff --git a/docker/Dockerfile.gNB.aw2s.rocky b/docker/Dockerfile.gNB.aw2s.rocky index 1897bf2720..57b6e8c1b5 100644 --- a/docker/Dockerfile.gNB.aw2s.rocky +++ b/docker/Dockerfile.gNB.aw2s.rocky @@ -95,5 +95,6 @@ RUN ln -s /usr/local/lib/libaw2sori_transpro.so /usr/local/lib/libthirdparty_tra WORKDIR /opt/oai-gnb-aw2s -ENTRYPOINT ["/opt/oai-gnb-aw2s/bin/entrypoint.sh"] +COPY --from=gnb-base /tini /tini +ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-gnb-aw2s/bin/entrypoint.sh"] CMD ["/opt/oai-gnb-aw2s/bin/nr-softmodem", "-O", "/opt/oai-gnb-aw2s/etc/gnb.conf"] diff --git a/docker/Dockerfile.gNB.aw2s.ubuntu20 b/docker/Dockerfile.gNB.aw2s.ubuntu20 index 321876638d..4d28c38707 100644 --- a/docker/Dockerfile.gNB.aw2s.ubuntu20 +++ b/docker/Dockerfile.gNB.aw2s.ubuntu20 @@ -81,5 +81,6 @@ RUN /bin/bash -c "ln -s /usr/local/lib/libaw2sori_transpro.so /usr/local/lib/lib WORKDIR /opt/oai-gnb-aw2s -ENTRYPOINT ["/opt/oai-gnb-aw2s/bin/entrypoint.sh"] +COPY --from=gnb-base /tini /tini +ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-gnb-aw2s/bin/entrypoint.sh"] CMD ["/opt/oai-gnb-aw2s/bin/nr-softmodem", "-O", "/opt/oai-gnb-aw2s/etc/gnb.conf"] diff --git a/docker/Dockerfile.gNB.rhel9 b/docker/Dockerfile.gNB.rhel9 index fc6a6c5975..358782519f 100644 --- a/docker/Dockerfile.gNB.rhel9 +++ b/docker/Dockerfile.gNB.rhel9 @@ -111,5 +111,6 @@ WORKDIR /opt/oai-gnb #EXPOSE 50000/udp # IF5 / ORI (control) #EXPOSE 50001/udp # IF5 / ECPRI (data) -ENTRYPOINT ["/opt/oai-gnb/bin/entrypoint.sh"] +COPY --from=gnb-base /tini /tini +ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-gnb/bin/entrypoint.sh"] CMD ["/opt/oai-gnb/bin/nr-softmodem", "-O", "/opt/oai-gnb/etc/gnb.conf"] diff --git a/docker/Dockerfile.gNB.rocky b/docker/Dockerfile.gNB.rocky index 035f1122a5..d4c8504bb8 100644 --- a/docker/Dockerfile.gNB.rocky +++ b/docker/Dockerfile.gNB.rocky @@ -121,5 +121,6 @@ WORKDIR /opt/oai-gnb #EXPOSE 50000/udp # IF5 / ORI (control) #EXPOSE 50001/udp # IF5 / ECPRI (data) -ENTRYPOINT ["/opt/oai-gnb/bin/entrypoint.sh"] +COPY --from=gnb-base /tini /tini +ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-gnb/bin/entrypoint.sh"] CMD ["/opt/oai-gnb/bin/nr-softmodem", "-O", "/opt/oai-gnb/etc/gnb.conf"] diff --git a/docker/Dockerfile.gNB.ubuntu20 b/docker/Dockerfile.gNB.ubuntu20 index 6cc0af8965..16e3795fe8 100644 --- a/docker/Dockerfile.gNB.ubuntu20 +++ b/docker/Dockerfile.gNB.ubuntu20 @@ -108,5 +108,6 @@ WORKDIR /opt/oai-gnb #EXPOSE 50000/udp # IF5 / ORI (control) #EXPOSE 50001/udp # IF5 / ECPRI (data) -ENTRYPOINT ["/opt/oai-gnb/bin/entrypoint.sh"] +COPY --from=gnb-base /tini /tini +ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-gnb/bin/entrypoint.sh"] CMD ["/opt/oai-gnb/bin/nr-softmodem", "-O", "/opt/oai-gnb/etc/gnb.conf"] diff --git a/docker/Dockerfile.lteRU.rhel9 b/docker/Dockerfile.lteRU.rhel9 index 81741441ab..30e996600c 100644 --- a/docker/Dockerfile.lteRU.rhel9 +++ b/docker/Dockerfile.lteRU.rhel9 @@ -95,5 +95,6 @@ RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so /usr/local/lib/liboai WORKDIR /opt/oai-lte-ru -ENTRYPOINT ["/opt/oai-lte-ru/bin/entrypoint.sh"] +COPY --from=ru-base /tini /tini +ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-lte-ru/bin/entrypoint.sh"] CMD ["/opt/oai-lte-ru/bin/oairu", "-O", "/opt/oai-lte-ru/etc/rru.conf"] diff --git a/docker/Dockerfile.lteRU.ubuntu20 b/docker/Dockerfile.lteRU.ubuntu20 index 1a476c5733..6fa2a167b7 100644 --- a/docker/Dockerfile.lteRU.ubuntu20 +++ b/docker/Dockerfile.lteRU.ubuntu20 @@ -88,5 +88,6 @@ RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so /usr/local/lib/liboai WORKDIR /opt/oai-lte-ru -ENTRYPOINT ["/opt/oai-lte-ru/bin/entrypoint.sh"] +COPY --from=ru-base /tini /tini +ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-lte-ru/bin/entrypoint.sh"] CMD ["/opt/oai-lte-ru/bin/oairu", "-O", "/opt/oai-lte-ru/etc/rru.conf"] diff --git a/docker/Dockerfile.lteUE.rhel9 b/docker/Dockerfile.lteUE.rhel9 index 1ba07477c1..a9a95e23a6 100644 --- a/docker/Dockerfile.lteUE.rhel9 +++ b/docker/Dockerfile.lteUE.rhel9 @@ -104,5 +104,6 @@ RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so /usr/local/lib/liboai ldconfig WORKDIR /opt/oai-lte-ue +COPY --from=lte-ue-base /tini /tini CMD ["/opt/oai-lte-ue/bin/lte-uesoftmodem"] -ENTRYPOINT ["/opt/oai-lte-ue/bin/entrypoint.sh"] +ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-lte-ue/bin/entrypoint.sh"] diff --git a/docker/Dockerfile.lteUE.rocky b/docker/Dockerfile.lteUE.rocky index 9e4043fb9b..95845a0fd4 100644 --- a/docker/Dockerfile.lteUE.rocky +++ b/docker/Dockerfile.lteUE.rocky @@ -116,5 +116,6 @@ RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so /usr/local/lib/liboai echo "ldd on libtelnetsrv.so" && ldd /usr/local/lib/libtelnetsrv.so WORKDIR /opt/oai-lte-ue +COPY --from=lte-ue-base /tini /tini CMD ["/opt/oai-lte-ue/bin/lte-uesoftmodem"] -ENTRYPOINT ["/opt/oai-lte-ue/bin/entrypoint.sh"] +ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-lte-ue/bin/entrypoint.sh"] diff --git a/docker/Dockerfile.lteUE.ubuntu20 b/docker/Dockerfile.lteUE.ubuntu20 index 89dbd505d5..3320c36bf8 100644 --- a/docker/Dockerfile.lteUE.ubuntu20 +++ b/docker/Dockerfile.lteUE.ubuntu20 @@ -104,5 +104,6 @@ RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so /usr/local/lib/liboai ldd /opt/oai-lte-ue/bin/lte-uesoftmodem WORKDIR /opt/oai-lte-ue +COPY --from=lte-ue-base /tini /tini CMD ["/opt/oai-lte-ue/bin/lte-uesoftmodem"] -ENTRYPOINT ["/opt/oai-lte-ue/bin/entrypoint.sh"] +ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-lte-ue/bin/entrypoint.sh"] diff --git a/docker/Dockerfile.nr-cuup.rhel9 b/docker/Dockerfile.nr-cuup.rhel9 index 5ae63a0e48..00d6236bfe 100644 --- a/docker/Dockerfile.nr-cuup.rhel9 +++ b/docker/Dockerfile.nr-cuup.rhel9 @@ -75,5 +75,6 @@ WORKDIR /opt/oai-gnb/etc WORKDIR /opt/oai-gnb -ENTRYPOINT ["/opt/oai-gnb/bin/entrypoint.sh"] +COPY --from=gnb-base /tini /tini +ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-gnb/bin/entrypoint.sh"] CMD ["/opt/oai-gnb/bin/nr-cuup", "-O", "/opt/oai-gnb/etc/gnb.conf"] diff --git a/docker/Dockerfile.nr-cuup.rocky b/docker/Dockerfile.nr-cuup.rocky index adeaf053d9..e3dc1bf5be 100644 --- a/docker/Dockerfile.nr-cuup.rocky +++ b/docker/Dockerfile.nr-cuup.rocky @@ -76,5 +76,6 @@ WORKDIR /opt/oai-gnb/etc WORKDIR /opt/oai-gnb -ENTRYPOINT ["/opt/oai-gnb/bin/entrypoint.sh"] +COPY --from=gnb-base /tini /tini +ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-gnb/bin/entrypoint.sh"] CMD ["/opt/oai-gnb/bin/nr-cuup", "-O", "/opt/oai-gnb/etc/gnb.conf"] diff --git a/docker/Dockerfile.nr-cuup.ubuntu20 b/docker/Dockerfile.nr-cuup.ubuntu20 index 365e48a4b8..0a371e669c 100644 --- a/docker/Dockerfile.nr-cuup.ubuntu20 +++ b/docker/Dockerfile.nr-cuup.ubuntu20 @@ -66,5 +66,6 @@ RUN ldconfig && ldd /opt/oai-gnb/bin/nr-cuup WORKDIR /opt/oai-gnb/etc WORKDIR /opt/oai-gnb -ENTRYPOINT ["/opt/oai-gnb/bin/entrypoint.sh"] +COPY --from=gnb-base /tini /tini +ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-gnb/bin/entrypoint.sh"] CMD ["/opt/oai-gnb/bin/nr-cuup", "-O", "/opt/oai-gnb/etc/gnb.conf"] diff --git a/docker/Dockerfile.nrUE.rhel9 b/docker/Dockerfile.nrUE.rhel9 index 90d7499dd0..14d9f6c7f7 100644 --- a/docker/Dockerfile.nrUE.rhel9 +++ b/docker/Dockerfile.nrUE.rhel9 @@ -108,5 +108,6 @@ RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so /usr/local/lib/liboai WORKDIR /opt/oai-nr-ue +COPY --from=nr-ue-base /tini /tini CMD ["/opt/oai-nr-ue/bin/nr-uesoftmodem", "-O", "/opt/oai-nr-ue/etc/nr-ue.conf"] -ENTRYPOINT ["/opt/oai-nr-ue/bin/entrypoint.sh"] +ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-nr-ue/bin/entrypoint.sh"] diff --git a/docker/Dockerfile.nrUE.rocky b/docker/Dockerfile.nrUE.rocky index 638b4406c4..1ffccd60d5 100644 --- a/docker/Dockerfile.nrUE.rocky +++ b/docker/Dockerfile.nrUE.rocky @@ -117,5 +117,6 @@ RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so /usr/local/lib/liboai echo "ldd on libtelnetsrv_5Gue.so" && ldd /usr/local/lib/libtelnetsrv_5Gue.so WORKDIR /opt/oai-nr-ue +COPY --from=nr-ue-base /tini /tini CMD ["/opt/oai-nr-ue/bin/nr-uesoftmodem", "-O", "/opt/oai-nr-ue/etc/nr-ue.conf"] -ENTRYPOINT ["/opt/oai-nr-ue/bin/entrypoint.sh"] +ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-nr-ue/bin/entrypoint.sh"] diff --git a/docker/Dockerfile.nrUE.ubuntu20 b/docker/Dockerfile.nrUE.ubuntu20 index 30d32b2f31..7418c6ccb9 100644 --- a/docker/Dockerfile.nrUE.ubuntu20 +++ b/docker/Dockerfile.nrUE.ubuntu20 @@ -104,5 +104,6 @@ RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so /usr/local/lib/liboai ldd /opt/oai-nr-ue/bin/nr-uesoftmodem WORKDIR /opt/oai-nr-ue +COPY --from=nr-ue-base /tini /tini CMD ["/opt/oai-nr-ue/bin/nr-uesoftmodem", "-O", "/opt/oai-nr-ue/etc/nr-ue.conf"] -ENTRYPOINT ["/opt/oai-nr-ue/bin/entrypoint.sh"] +ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-nr-ue/bin/entrypoint.sh"]