Refactor entrypoint to be more extensible

See #4
master
Alexey Sokolov 7 years ago
parent 3a25a4a6ac
commit 5f398db202

@ -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

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

@ -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

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

@ -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

@ -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" "$@"

@ -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"]

@ -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" "$@"

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