Browse Source

Refactor entrypoint to be more extensible

See #4
master
Alexey Sokolov 5 years ago
parent
commit
5f398db202
  1. 7
      full/30-build-modules.sh
  2. 3
      full/Dockerfile
  3. 6
      slim/00-try-sh.sh
  4. 3
      slim/01-options.sh
  5. 5
      slim/50-chown.sh
  6. 5
      slim/99-launch.sh
  7. 8
      slim/Dockerfile
  8. 27
      slim/docker-entrypoint.sh
  9. 5
      slim/entrypoint.sh

7
full/znc-build-modules.sh → full/30-build-modules.sh

@ -1,8 +1,7 @@
#!/bin/sh
# Build modules from source.
if [ -d "${DATADIR}/modules" ]; then
cd "${DATADIR}/modules" || exit 11
pushd "${DATADIR}/modules" || exit 11
# Find module sources.
modules=$(find . -name "*.cpp")
@ -12,5 +11,7 @@ if [ -d "${DATADIR}/modules" ]; then
echo "Building modules $modules..."
/opt/znc/bin/znc-buildmod $modules || exit 12
fi
popd
fi

3
full/Dockerfile

@ -8,4 +8,5 @@ RUN set -x \
libressl-dev \
perl \
python3
COPY znc-build-modules.sh /
COPY 30-build-modules.sh /startup-sequence/

6
slim/00-try-sh.sh

@ -0,0 +1,6 @@
# "docker run -ti znc sh" should work, according to
# https://github.com/docker-library/official-images
if [ "${1:0:1}" != '-' ]; then
exec "$@"
fi

3
slim/01-options.sh

@ -0,0 +1,3 @@
# Might be overriden in some later file, when using "FROM znc"
DATADIR="/znc-data"

5
slim/50-chown.sh

@ -0,0 +1,5 @@
# Make sure $DATADIR is owned by znc user. This affects ownership of the
# mounted directory on the host machine too.
chown -R znc:znc "$DATADIR" || exit 1
chmod 700 "$DATADIR" || exit 2

5
slim/99-launch.sh

@ -0,0 +1,5 @@
# ZNC itself responds to SIGTERM, and reaps its children, but whatever was
# started via *shell module is not guaranteed to reap their children.
# That's why using tini.
exec /sbin/tini -- su-exec znc:znc /opt/znc/bin/znc --foreground --datadir "$DATADIR" "$@"

8
slim/Dockerfile

@ -45,8 +45,12 @@ RUN set -x \
&& apk del build-dependencies \
&& cd / && rm -rf /znc-src
COPY docker-entrypoint.sh /
COPY entrypoint.sh /
COPY 00-try-sh.sh /startup-sequence/
COPY 01-options.sh /startup-sequence/
COPY 50-chown.sh /startup-sequence/
COPY 99-launch.sh /startup-sequence/
VOLUME /znc-data
ENTRYPOINT ["/docker-entrypoint.sh"]
ENTRYPOINT ["/entrypoint.sh"]

27
slim/docker-entrypoint.sh

@ -1,27 +0,0 @@
#!/bin/sh
# "docker run -ti znc sh" should work, according to
# https://github.com/docker-library/official-images
if [ "${1:0:1}" != '-' ]; then
exec "$@"
fi
# Options.
DATADIR="/znc-data"
# This file is added by znc:full image
if [ -r /znc-build-modules.sh ]; then
source /znc-build-modules.sh || exit 3
fi
cd /
# Make sure $DATADIR is owned by znc user. This affects ownership of the
# mounted directory on the host machine too.
chown -R znc:znc "$DATADIR" || exit 1
chmod 700 "$DATADIR" || exit 2
# ZNC itself responds to SIGTERM, and reaps its children, but whatever was
# started via *shell module is not guaranteed to reap their children.
# That's why using tini.
exec /sbin/tini -- su-exec znc:znc /opt/znc/bin/znc --foreground --datadir "$DATADIR" "$@"

5
slim/entrypoint.sh

@ -0,0 +1,5 @@
#!/bin/sh
for f in /startup-sequence/*; do
source "$f" || exit 1
done
Loading…
Cancel
Save