From c6df631bccafd528f92c2aa88b7b3ded1db93a9e Mon Sep 17 00:00:00 2001 From: Konstantin Pavlov Date: Thu, 3 Oct 2019 15:08:44 +0300 Subject: Docker: added an entrypoint to make configuration easier. Docker images now accept shell scripts, json files and certificate chain bundles to provide configuration on a container start by placing them into /docker-entrypoint.d/ directory. --- pkg/docker/Dockerfile.tmpl | 4 +++ pkg/docker/docker-entrypoint.sh | 71 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100755 pkg/docker/docker-entrypoint.sh (limited to 'pkg/docker') diff --git a/pkg/docker/Dockerfile.tmpl b/pkg/docker/Dockerfile.tmpl index 18d6d34e..c721931b 100644 --- a/pkg/docker/Dockerfile.tmpl +++ b/pkg/docker/Dockerfile.tmpl @@ -86,4 +86,8 @@ RUN ln -sf /dev/stdout /var/log/unit.log STOPSIGNAL SIGTERM +COPY docker-entrypoint.sh /usr/local/bin/ +RUN mkdir /docker-entrypoint.d/ +ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] + CMD ["unitd", "--no-daemon", "--control", "unix:/var/run/control.unit.sock"] diff --git a/pkg/docker/docker-entrypoint.sh b/pkg/docker/docker-entrypoint.sh new file mode 100755 index 00000000..4ad7cb9a --- /dev/null +++ b/pkg/docker/docker-entrypoint.sh @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +set -e + +curl_put() +{ + RET=`/usr/bin/curl -s -w '%{http_code}' -X PUT --data-binary @$1 --unix-socket /var/run/control.unit.sock http://localhost/$2` + RET_BODY=${RET::-3} + RET_STATUS=$(echo $RET | /usr/bin/tail -c 4) + if [ "$RET_STATUS" -ne "200" ]; then + echo "$0: Error: HTTP response status code is '$RET_STATUS'" + echo "$RET_BODY" + return 1 + else + echo "$0: OK: HTTP response status code is '$RET_STATUS'" + echo "$RET_BODY" + fi + return 0 +} + +if [ "$1" = "unitd" ]; then + if /usr/bin/find "/var/lib/unit/" -mindepth 1 -print -quit 2>/dev/null | /bin/grep -q .; then + echo "$0: /var/lib/unit/ is not empty, skipping initial configuration..." + else + if /usr/bin/find "/docker-entrypoint.d/" -mindepth 1 -print -quit 2>/dev/null | /bin/grep -q .; then + echo "$0: /docker-entrypoint.d/ is not empty, launching Unit daemon to perform initial configuration..." + /usr/sbin/unitd --control unix:/var/run/control.unit.sock + + while [ ! -S /var/run/control.unit.sock ]; do echo "$0: Waiting for control socket to be created..."; /bin/sleep 0.1; done + # even when the control socket exists, it does not mean unit has finished initialisation + # this curl call will get a reply once unit is fully launched + /usr/bin/curl -s -X GET --unix-socket /var/run/control.unit.sock http://localhost/ + + echo "$0: Looking for certificate bundles in /docker-entrypoint.d/..." + for f in $(/usr/bin/find /docker-entrypoint.d/ -type f -name "*.pem"); do + echo "$0: Uploading certificates bundle: $f" + curl_put $f "certificates/$(basename $f .pem)" + done + + echo "$0: Looking for configuration snippets in /docker-entrypoint.d/..." + for f in $(/usr/bin/find /docker-entrypoint.d/ -type f -name "*.json"); do + echo "$0: Applying configuration $f"; + curl_put $f "config" + done + + echo "$0: Looking for shell scripts in /docker-entrypoint.d/..." + for f in $(/usr/bin/find /docker-entrypoint.d/ -type f -name "*.sh"); do + echo "$0: Launching $f"; + "$f" + done + + # warn on filetypes we don't know what to do with + for f in $(/usr/bin/find /docker-entrypoint.d/ -type f -not -name "*.sh" -not -name "*.json" -not -name "*.pem"); do + echo "$0: Ignoring $f"; + done + + echo "$0: Stopping Unit daemon after initial configuration..." + kill -TERM `/bin/cat /var/run/unit.pid` + + while [ -S /var/run/control.unit.sock ]; do echo "$0: Waiting for control socket to be removed..."; /bin/sleep 0.1; done + + echo + echo "$0: Unit initial configuration complete; ready for start up..." + echo + else + echo "$0: /docker-entrypoint.d/ is empty, skipping initial configuration..." + fi + fi +fi + +exec "$@" -- cgit From f5e86ad8fc8f3d6e3669bc1767f0ee4554a9d6d7 Mon Sep 17 00:00:00 2001 From: Konstantin Pavlov Date: Thu, 3 Oct 2019 15:08:50 +0300 Subject: Regenerated Dockerfiles. --- pkg/docker/Dockerfile.full | 4 ++++ pkg/docker/Dockerfile.go1.7-dev | 4 ++++ pkg/docker/Dockerfile.go1.8-dev | 4 ++++ pkg/docker/Dockerfile.minimal | 4 ++++ pkg/docker/Dockerfile.perl5.24 | 4 ++++ pkg/docker/Dockerfile.php7.0 | 4 ++++ pkg/docker/Dockerfile.python2.7 | 4 ++++ pkg/docker/Dockerfile.python3.5 | 4 ++++ pkg/docker/Dockerfile.ruby2.3 | 4 ++++ 9 files changed, 36 insertions(+) (limited to 'pkg/docker') diff --git a/pkg/docker/Dockerfile.full b/pkg/docker/Dockerfile.full index 55ad41b8..c03bc4e5 100644 --- a/pkg/docker/Dockerfile.full +++ b/pkg/docker/Dockerfile.full @@ -86,4 +86,8 @@ RUN ln -sf /dev/stdout /var/log/unit.log STOPSIGNAL SIGTERM +COPY docker-entrypoint.sh /usr/local/bin/ +RUN mkdir /docker-entrypoint.d/ +ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] + CMD ["unitd", "--no-daemon", "--control", "unix:/var/run/control.unit.sock"] diff --git a/pkg/docker/Dockerfile.go1.7-dev b/pkg/docker/Dockerfile.go1.7-dev index cb5a19f5..7688b619 100644 --- a/pkg/docker/Dockerfile.go1.7-dev +++ b/pkg/docker/Dockerfile.go1.7-dev @@ -86,4 +86,8 @@ RUN ln -sf /dev/stdout /var/log/unit.log STOPSIGNAL SIGTERM +COPY docker-entrypoint.sh /usr/local/bin/ +RUN mkdir /docker-entrypoint.d/ +ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] + CMD ["unitd", "--no-daemon", "--control", "unix:/var/run/control.unit.sock"] diff --git a/pkg/docker/Dockerfile.go1.8-dev b/pkg/docker/Dockerfile.go1.8-dev index 36c0eb2a..d655d7b1 100644 --- a/pkg/docker/Dockerfile.go1.8-dev +++ b/pkg/docker/Dockerfile.go1.8-dev @@ -86,4 +86,8 @@ RUN ln -sf /dev/stdout /var/log/unit.log STOPSIGNAL SIGTERM +COPY docker-entrypoint.sh /usr/local/bin/ +RUN mkdir /docker-entrypoint.d/ +ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] + CMD ["unitd", "--no-daemon", "--control", "unix:/var/run/control.unit.sock"] diff --git a/pkg/docker/Dockerfile.minimal b/pkg/docker/Dockerfile.minimal index 38744ed9..1bdec9bb 100644 --- a/pkg/docker/Dockerfile.minimal +++ b/pkg/docker/Dockerfile.minimal @@ -86,4 +86,8 @@ RUN ln -sf /dev/stdout /var/log/unit.log STOPSIGNAL SIGTERM +COPY docker-entrypoint.sh /usr/local/bin/ +RUN mkdir /docker-entrypoint.d/ +ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] + CMD ["unitd", "--no-daemon", "--control", "unix:/var/run/control.unit.sock"] diff --git a/pkg/docker/Dockerfile.perl5.24 b/pkg/docker/Dockerfile.perl5.24 index aa76f440..6d0be650 100644 --- a/pkg/docker/Dockerfile.perl5.24 +++ b/pkg/docker/Dockerfile.perl5.24 @@ -86,4 +86,8 @@ RUN ln -sf /dev/stdout /var/log/unit.log STOPSIGNAL SIGTERM +COPY docker-entrypoint.sh /usr/local/bin/ +RUN mkdir /docker-entrypoint.d/ +ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] + CMD ["unitd", "--no-daemon", "--control", "unix:/var/run/control.unit.sock"] diff --git a/pkg/docker/Dockerfile.php7.0 b/pkg/docker/Dockerfile.php7.0 index 5ae8dcb4..5ee60c7c 100644 --- a/pkg/docker/Dockerfile.php7.0 +++ b/pkg/docker/Dockerfile.php7.0 @@ -86,4 +86,8 @@ RUN ln -sf /dev/stdout /var/log/unit.log STOPSIGNAL SIGTERM +COPY docker-entrypoint.sh /usr/local/bin/ +RUN mkdir /docker-entrypoint.d/ +ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] + CMD ["unitd", "--no-daemon", "--control", "unix:/var/run/control.unit.sock"] diff --git a/pkg/docker/Dockerfile.python2.7 b/pkg/docker/Dockerfile.python2.7 index f7a35109..88fdf1d5 100644 --- a/pkg/docker/Dockerfile.python2.7 +++ b/pkg/docker/Dockerfile.python2.7 @@ -86,4 +86,8 @@ RUN ln -sf /dev/stdout /var/log/unit.log STOPSIGNAL SIGTERM +COPY docker-entrypoint.sh /usr/local/bin/ +RUN mkdir /docker-entrypoint.d/ +ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] + CMD ["unitd", "--no-daemon", "--control", "unix:/var/run/control.unit.sock"] diff --git a/pkg/docker/Dockerfile.python3.5 b/pkg/docker/Dockerfile.python3.5 index 4e27ca89..33501f38 100644 --- a/pkg/docker/Dockerfile.python3.5 +++ b/pkg/docker/Dockerfile.python3.5 @@ -86,4 +86,8 @@ RUN ln -sf /dev/stdout /var/log/unit.log STOPSIGNAL SIGTERM +COPY docker-entrypoint.sh /usr/local/bin/ +RUN mkdir /docker-entrypoint.d/ +ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] + CMD ["unitd", "--no-daemon", "--control", "unix:/var/run/control.unit.sock"] diff --git a/pkg/docker/Dockerfile.ruby2.3 b/pkg/docker/Dockerfile.ruby2.3 index 35e4779c..00084335 100644 --- a/pkg/docker/Dockerfile.ruby2.3 +++ b/pkg/docker/Dockerfile.ruby2.3 @@ -86,4 +86,8 @@ RUN ln -sf /dev/stdout /var/log/unit.log STOPSIGNAL SIGTERM +COPY docker-entrypoint.sh /usr/local/bin/ +RUN mkdir /docker-entrypoint.d/ +ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] + CMD ["unitd", "--no-daemon", "--control", "unix:/var/run/control.unit.sock"] -- cgit From 946cbd1f100da56c4ea38a1598fd86d0ee1d72f5 Mon Sep 17 00:00:00 2001 From: Valentin Bartenev Date: Thu, 3 Oct 2019 17:08:32 +0300 Subject: Generated Dockerfiles for Unit 1.12.0. --- pkg/docker/Dockerfile.full | 2 +- pkg/docker/Dockerfile.go1.7-dev | 2 +- pkg/docker/Dockerfile.go1.8-dev | 2 +- pkg/docker/Dockerfile.minimal | 2 +- pkg/docker/Dockerfile.perl5.24 | 2 +- pkg/docker/Dockerfile.php7.0 | 2 +- pkg/docker/Dockerfile.python2.7 | 2 +- pkg/docker/Dockerfile.python3.5 | 2 +- pkg/docker/Dockerfile.ruby2.3 | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) (limited to 'pkg/docker') diff --git a/pkg/docker/Dockerfile.full b/pkg/docker/Dockerfile.full index c03bc4e5..c6646fda 100644 --- a/pkg/docker/Dockerfile.full +++ b/pkg/docker/Dockerfile.full @@ -2,7 +2,7 @@ FROM debian:stretch-slim LABEL maintainer="NGINX Docker Maintainers " -ENV UNIT_VERSION 1.11.0-1~stretch +ENV UNIT_VERSION 1.12.0-1~stretch RUN set -x \ && apt-get update \ diff --git a/pkg/docker/Dockerfile.go1.7-dev b/pkg/docker/Dockerfile.go1.7-dev index 7688b619..9b57d3ec 100644 --- a/pkg/docker/Dockerfile.go1.7-dev +++ b/pkg/docker/Dockerfile.go1.7-dev @@ -2,7 +2,7 @@ FROM debian:stretch-slim LABEL maintainer="NGINX Docker Maintainers " -ENV UNIT_VERSION 1.11.0-1~stretch +ENV UNIT_VERSION 1.12.0-1~stretch RUN set -x \ && apt-get update \ diff --git a/pkg/docker/Dockerfile.go1.8-dev b/pkg/docker/Dockerfile.go1.8-dev index d655d7b1..5f650aae 100644 --- a/pkg/docker/Dockerfile.go1.8-dev +++ b/pkg/docker/Dockerfile.go1.8-dev @@ -2,7 +2,7 @@ FROM debian:stretch-slim LABEL maintainer="NGINX Docker Maintainers " -ENV UNIT_VERSION 1.11.0-1~stretch +ENV UNIT_VERSION 1.12.0-1~stretch RUN set -x \ && apt-get update \ diff --git a/pkg/docker/Dockerfile.minimal b/pkg/docker/Dockerfile.minimal index 1bdec9bb..427a3ada 100644 --- a/pkg/docker/Dockerfile.minimal +++ b/pkg/docker/Dockerfile.minimal @@ -2,7 +2,7 @@ FROM debian:stretch-slim LABEL maintainer="NGINX Docker Maintainers " -ENV UNIT_VERSION 1.11.0-1~stretch +ENV UNIT_VERSION 1.12.0-1~stretch RUN set -x \ && apt-get update \ diff --git a/pkg/docker/Dockerfile.perl5.24 b/pkg/docker/Dockerfile.perl5.24 index 6d0be650..7e51adcf 100644 --- a/pkg/docker/Dockerfile.perl5.24 +++ b/pkg/docker/Dockerfile.perl5.24 @@ -2,7 +2,7 @@ FROM debian:stretch-slim LABEL maintainer="NGINX Docker Maintainers " -ENV UNIT_VERSION 1.11.0-1~stretch +ENV UNIT_VERSION 1.12.0-1~stretch RUN set -x \ && apt-get update \ diff --git a/pkg/docker/Dockerfile.php7.0 b/pkg/docker/Dockerfile.php7.0 index 5ee60c7c..9615e041 100644 --- a/pkg/docker/Dockerfile.php7.0 +++ b/pkg/docker/Dockerfile.php7.0 @@ -2,7 +2,7 @@ FROM debian:stretch-slim LABEL maintainer="NGINX Docker Maintainers " -ENV UNIT_VERSION 1.11.0-1~stretch +ENV UNIT_VERSION 1.12.0-1~stretch RUN set -x \ && apt-get update \ diff --git a/pkg/docker/Dockerfile.python2.7 b/pkg/docker/Dockerfile.python2.7 index 88fdf1d5..eb599f95 100644 --- a/pkg/docker/Dockerfile.python2.7 +++ b/pkg/docker/Dockerfile.python2.7 @@ -2,7 +2,7 @@ FROM debian:stretch-slim LABEL maintainer="NGINX Docker Maintainers " -ENV UNIT_VERSION 1.11.0-1~stretch +ENV UNIT_VERSION 1.12.0-1~stretch RUN set -x \ && apt-get update \ diff --git a/pkg/docker/Dockerfile.python3.5 b/pkg/docker/Dockerfile.python3.5 index 33501f38..362fb3ed 100644 --- a/pkg/docker/Dockerfile.python3.5 +++ b/pkg/docker/Dockerfile.python3.5 @@ -2,7 +2,7 @@ FROM debian:stretch-slim LABEL maintainer="NGINX Docker Maintainers " -ENV UNIT_VERSION 1.11.0-1~stretch +ENV UNIT_VERSION 1.12.0-1~stretch RUN set -x \ && apt-get update \ diff --git a/pkg/docker/Dockerfile.ruby2.3 b/pkg/docker/Dockerfile.ruby2.3 index 00084335..cc2e8637 100644 --- a/pkg/docker/Dockerfile.ruby2.3 +++ b/pkg/docker/Dockerfile.ruby2.3 @@ -2,7 +2,7 @@ FROM debian:stretch-slim LABEL maintainer="NGINX Docker Maintainers " -ENV UNIT_VERSION 1.11.0-1~stretch +ENV UNIT_VERSION 1.12.0-1~stretch RUN set -x \ && apt-get update \ -- cgit