diff --git a/docker/netdisco-backend/Dockerfile b/docker/netdisco-backend/Dockerfile index 002e97fa..02629f5e 100644 --- a/docker/netdisco-backend/Dockerfile +++ b/docker/netdisco-backend/Dockerfile @@ -5,11 +5,11 @@ FROM docker.io/netdisco/netdisco-base:${TAG}-base LABEL org.netdisco.maintainer="The Netdisco Project" LABEL org.netdisco.version=${TAG} -WORKDIR $NETDISCO_HOME/netdisco-mibs +WORKDIR /home/netdisco/netdisco-mibs RUN curl -sL https://api.github.com/repos/netdisco/netdisco-mibs/tags | \ jq '.[]|.tarball_url|select(test("tarball/\\d+\\.\\d+$"))' | \ sort -rg | head -n1 | xargs -n1 curl -sL | tar --strip-components=1 -zxf - -WORKDIR $NETDISCO_HOME +WORKDIR /home/netdisco ENTRYPOINT ["/home/netdisco/bin/netdisco-backend"] CMD ["foreground"] diff --git a/docker/netdisco-base/Dockerfile b/docker/netdisco-base/Dockerfile index 5fe22ee3..cce4d499 100644 --- a/docker/netdisco-base/Dockerfile +++ b/docker/netdisco-base/Dockerfile @@ -1,9 +1,6 @@ # vim: ft=Dockerfile ARG TAG=master -FROM debian:stable-slim - -LABEL org.netdisco.maintainer="The Netdisco Project" -LABEL org.netdisco.version=${TAG} +FROM debian:stable-slim as netdisco-build-image RUN bash -c 'mkdir -p /usr/share/man/man{1..8}' && \ apt-get -yq update && \ @@ -19,28 +16,55 @@ RUN bash -c 'mkdir -p /usr/share/man/man{1..8}' && \ libnet-ldap-perl \ libsnmp-perl \ libssl-dev \ - postgresql-client && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* + postgresql-client -ENV NETDISCO_HOME "/home/netdisco" +ENV HOME "/home/netdisco" RUN groupadd -r netdisco -g 901 && \ - useradd -u 901 -r -p x -g netdisco -m -d $NETDISCO_HOME -s /bin/bash -c "netdisco user" netdisco + useradd -u 901 -r -p x -g netdisco -m -d $HOME -s /bin/bash -c "netdisco user" netdisco USER netdisco:netdisco RUN curl -sL https://api.github.com/repos/netdisco/netdisco/tags | \ jq '.[]|.name|select(test("^\\d+\\.\\d+$"))|"https://github.com/netdisco/netdisco.git@"+.' | \ sort -rg | head -n1 | \ - PERL5LIB='.' xargs -n1 cpanm --quiet --notest --local-lib $NETDISCO_HOME/perl5 + PERL5LIB='.' xargs -n1 cpanm --quiet --notest --local-lib "${HOME}/perl5" -WORKDIR $NETDISCO_HOME/bin -RUN bash -c 'ln -sf $NETDISCO_HOME/perl5/bin/{localenv,netdisco-*} .' -ENV PATH $NETDISCO_HOME/bin:$PATH -ENV SHELL "/bin/bash" +RUN bash -c 'mkdir ${HOME}/{bin,environments,nd-site-local}' +RUN bash -c 'ln -sf ${HOME}/perl5/bin/{localenv,netdisco-*} ${HOME}/bin' +COPY --chown=netdisco:netdisco deployment.yml "${HOME}/environments/" +COPY --chown=netdisco:netdisco wait_to_start.sh "${HOME}/bin/" -WORKDIR $NETDISCO_HOME/environments -COPY deployment.yml . +FROM debian:stable-slim + +LABEL org.netdisco.maintainer="The Netdisco Project" +LABEL org.netdisco.version=${TAG} + +RUN bash -c 'mkdir -p /usr/share/man/man{1..8}' && \ + apt-get -yq update && \ + apt-get install -yq --no-install-recommends \ + ca-certificates \ + cpanminus \ + curl \ + jq \ + libdbd-pg-perl \ + libio-socket-ssl-perl \ + libnet-ldap-perl \ + libsnmp-perl \ + libssl-dev \ + postgresql-client && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +COPY --from=netdisco-build-image \ + /etc/passwd /etc/group /etc/shadow /etc/ + +COPY --from=netdisco-build-image --chown=netdisco:netdisco \ + /home/netdisco /home/netdisco/ VOLUME ["/home/netdisco/environments", "/home/netdisco/nd-site-local"] -WORKDIR $NETDISCO_HOME + +USER netdisco:netdisco +WORKDIR /home/netdisco +ENV PATH "/home/netdisco/bin:$PATH" +ENV SHELL /bin/bash + CMD ["bash"] diff --git a/docker/netdisco-base/wait_to_start.sh b/docker/netdisco-base/wait_to_start.sh new file mode 100755 index 00000000..56c4f18a --- /dev/null +++ b/docker/netdisco-base/wait_to_start.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +echo $WAIT_COMMAND +echo $WAIT_START_CMD + +is_ready() { + eval "$WAIT_COMMAND" +} + +# wait until is ready +i=0 +while ! is_ready; do + i=`expr $i + 1` + if [ $i -ge $WAIT_LOOPS ]; then + echo "$(date) - still not ready, giving up" + exit 1 + fi + echo "$(date) - waiting to be ready" + sleep $WAIT_SLEEP +done + +#start the script +exec $WAIT_START_CMD