1
0
mirror of https://github.com/zokradonh/kopano-docker synced 2025-06-07 07:56:12 +00:00

Print a proper (error) message when container is read-only, but packages should be installed (#321)

* print an error message instead of failing to start if container is read-only
This commit is contained in:
Felix Bartels 2020-01-16 15:22:12 +01:00 committed by GitHub
parent 3367b539b7
commit b72359d000
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 64 additions and 40 deletions

View File

@ -27,15 +27,22 @@ fi
# Hint: this is not compatible with a read-only container. # Hint: this is not compatible with a read-only container.
# The general recommendation is to already build a container that has all required packages installed. # The general recommendation is to already build a container that has all required packages installed.
ADDITIONAL_KOPANO_PACKAGES=$(echo "$ADDITIONAL_KOPANO_PACKAGES" | tr -d '"') ADDITIONAL_KOPANO_PACKAGES=$(echo "$ADDITIONAL_KOPANO_PACKAGES" | tr -d '"')
[ -n "${ADDITIONAL_KOPANO_PACKAGES// }" ] && apt update if [ -n "$(mkdir -p "/var/lib/apt/lists/" 2&> /dev/null)" ]; then
[ -n "${ADDITIONAL_KOPANO_PACKAGES// }" ] && for installpkg in $ADDITIONAL_KOPANO_PACKAGES; do [ -n "${ADDITIONAL_KOPANO_PACKAGES// }" ] && apt update
# shellcheck disable=SC2016 disable=SC2086 [ -n "${ADDITIONAL_KOPANO_PACKAGES// }" ] && for installpkg in $ADDITIONAL_KOPANO_PACKAGES; do
if [ "$(dpkg-query -W -f='${Status}' $installpkg 2>/dev/null | grep -c 'ok installed')" -eq 0 ]; then # shellcheck disable=SC2016 disable=SC2086
DEBIAN_FRONTEND=noninteractive apt --assume-yes --no-upgrade install "$installpkg" if [ "$(dpkg-query -W -f='${Status}' $installpkg 2>/dev/null | grep -c 'ok installed')" -eq 0 ]; then
else DEBIAN_FRONTEND=noninteractive apt --assume-yes --no-upgrade install "$installpkg"
echo "INFO: $installpkg is already installed" else
fi echo "INFO: $installpkg is already installed"
done fi
done
else
echo "Notice: Container is run read-only, skipping package installation."
echo "If you want to have additional packages installed in the container either:"
echo "- build your own image with the packages already included"
echo "- switch the container to 'read_only: false'"
fi
mkdir -p /tmp/"$SERVICE_TO_START" /var/run/kopano mkdir -p /tmp/"$SERVICE_TO_START" /var/run/kopano

View File

@ -133,9 +133,6 @@ INSECURE=$INSECURE
docker_repo=kopano docker_repo=kopano
COMPOSE_PROJECT_NAME=kopano COMPOSE_PROJECT_NAME=kopano
# Additional packages to install
ADDITIONAL_KOPANO_PACKAGES=python3-grapi.backend.ldap
EOF EOF
else else
echo ".env already exists with initial configuration" echo ".env already exists with initial configuration"

View File

@ -8,15 +8,23 @@ ADDITIONAL_KOPANO_PACKAGES=${ADDITIONAL_KOPANO_PACKAGES:-""}
set -eu # unset variables are errors & non-zero return values exit the whole script set -eu # unset variables are errors & non-zero return values exit the whole script
[ "$DEBUG" ] && set -x [ "$DEBUG" ] && set -x
# TODO this is not compatible with a read-only container # Hint: this is not compatible with a read-only container.
# The general recommendation is to already build a container that has all required packages installed.
ADDITIONAL_KOPANO_PACKAGES=$(echo "$ADDITIONAL_KOPANO_PACKAGES" | tr -d '"') ADDITIONAL_KOPANO_PACKAGES=$(echo "$ADDITIONAL_KOPANO_PACKAGES" | tr -d '"')
[ -n "${ADDITIONAL_KOPANO_PACKAGES// }" ] && apt update if [ -n "$(mkdir -p "/var/lib/apt/lists/" 2&> /dev/null)" ]; then
[ -n "${ADDITIONAL_KOPANO_PACKAGES// }" ] && for installpkg in $ADDITIONAL_KOPANO_PACKAGES; do [ -n "${ADDITIONAL_KOPANO_PACKAGES// }" ] && apt update
# shellcheck disable=SC2016 disable=SC2086 [ -n "${ADDITIONAL_KOPANO_PACKAGES// }" ] && for installpkg in $ADDITIONAL_KOPANO_PACKAGES; do
if [ "$(dpkg-query -W -f='${Status}' $installpkg 2>/dev/null | grep -c 'ok installed')" -eq 0 ]; then # shellcheck disable=SC2016 disable=SC2086
apt --assume-yes --no-upgrade install "$installpkg" if [ "$(dpkg-query -W -f='${Status}' $installpkg 2>/dev/null | grep -c 'ok installed')" -eq 0 ]; then
fi apt --assume-yes --no-upgrade install "$installpkg"
done fi
done
else
echo "Notice: Container is run read-only, skipping package installation."
echo "If you want to have additional packages installed in the container either:"
echo "- build your own image with the packages already included"
echo "- switch the container to 'read_only: false'"
fi
echo "Ensure directories" echo "Ensure directories"
mkdir -p /run/sessions mkdir -p /run/sessions

View File

@ -14,7 +14,6 @@ if [ ! -e /kopano/"$SERVICE_TO_START".py ]; then
exit 1 exit 1
fi fi
# TODO how to best move this to /tmp?
echo "Configure service '$SERVICE_TO_START'" | ts echo "Configure service '$SERVICE_TO_START'" | ts
/usr/bin/python3 /kopano/"$SERVICE_TO_START".py /usr/bin/python3 /kopano/"$SERVICE_TO_START".py
@ -60,7 +59,6 @@ if [ "${GRID_WEBAPP:-yes}" = "yes" ]; then
jq '.apps.enabled += ["kopano-webapp"]' $CONFIG_JSON | sponge $CONFIG_JSON jq '.apps.enabled += ["kopano-webapp"]' $CONFIG_JSON | sponge $CONFIG_JSON
fi fi
# todo do not replace here, but in a temp location
sed s/\ *=\ */=/g /tmp/kopano/kwebd.cfg > /tmp/kweb-env sed s/\ *=\ */=/g /tmp/kopano/kwebd.cfg > /tmp/kweb-env
# always disable tls # always disable tls
export tls=no export tls=no

View File

@ -16,15 +16,22 @@ source /kopano/start-helper.sh
# The general recommendation is to already build a container that has all required packages installed. # The general recommendation is to already build a container that has all required packages installed.
ADDITIONAL_KOPANO_PACKAGES="$ADDITIONAL_KOPANO_PACKAGES $ADDITIONAL_KOPANO_WEBAPP_PLUGINS" ADDITIONAL_KOPANO_PACKAGES="$ADDITIONAL_KOPANO_PACKAGES $ADDITIONAL_KOPANO_WEBAPP_PLUGINS"
ADDITIONAL_KOPANO_PACKAGES=$(echo "$ADDITIONAL_KOPANO_PACKAGES" | tr -d '"') ADDITIONAL_KOPANO_PACKAGES=$(echo "$ADDITIONAL_KOPANO_PACKAGES" | tr -d '"')
[ -n "${ADDITIONAL_KOPANO_PACKAGES// }" ] && apt update if [ -n "$(mkdir -p "/var/lib/apt/lists/" 2&> /dev/null)" ]; then
[ -n "${ADDITIONAL_KOPANO_PACKAGES// }" ] && for installpkg in $ADDITIONAL_KOPANO_PACKAGES; do [ -n "${ADDITIONAL_KOPANO_PACKAGES// }" ] && apt update
# shellcheck disable=SC2016 disable=SC2086 [ -n "${ADDITIONAL_KOPANO_PACKAGES// }" ] && for installpkg in $ADDITIONAL_KOPANO_PACKAGES; do
if [ "$(dpkg-query -W -f='${Status}' $installpkg 2>/dev/null | grep -c 'ok installed')" -eq 0 ]; then # shellcheck disable=SC2016 disable=SC2086
DEBIAN_FRONTEND=noninteractive apt --assume-yes --no-upgrade install "$installpkg" if [ "$(dpkg-query -W -f='${Status}' $installpkg 2>/dev/null | grep -c 'ok installed')" -eq 0 ]; then
else DEBIAN_FRONTEND=noninteractive apt --assume-yes --no-upgrade install "$installpkg"
echo "INFO: $installpkg is already installed" else
fi echo "INFO: $installpkg is already installed"
done fi
done
else
echo "Notice: Container is run read-only, skipping package installation."
echo "If you want to have additional packages installed in the container either:"
echo "- build your own image with the packages already included"
echo "- switch the container to 'read_only: false'"
fi
# copy latest config template # copy latest config template
mkdir -p /tmp/webapp/ mkdir -p /tmp/webapp/

View File

@ -42,15 +42,22 @@ php_cfg_gen() {
# Hint: this is not compatible with a read-only container. # Hint: this is not compatible with a read-only container.
# The general recommendation is to already build a container that has all required packages installed. # The general recommendation is to already build a container that has all required packages installed.
ADDITIONAL_KOPANO_PACKAGES=$(echo "$ADDITIONAL_KOPANO_PACKAGES" | tr -d '"') ADDITIONAL_KOPANO_PACKAGES=$(echo "$ADDITIONAL_KOPANO_PACKAGES" | tr -d '"')
[ -n "${ADDITIONAL_KOPANO_PACKAGES// }" ] && apt update if [ -n "$(mkdir -p "/var/lib/apt/lists/" 2&> /dev/null)" ]; then
[ -n "${ADDITIONAL_KOPANO_PACKAGES// }" ] && for installpkg in $ADDITIONAL_KOPANO_PACKAGES; do [ -n "${ADDITIONAL_KOPANO_PACKAGES// }" ] && apt update
# shellcheck disable=SC2016 disable=SC2086 [ -n "${ADDITIONAL_KOPANO_PACKAGES// }" ] && for installpkg in $ADDITIONAL_KOPANO_PACKAGES; do
if [ "$(dpkg-query -W -f='${Status}' $installpkg 2>/dev/null | grep -c 'ok installed')" -eq 0 ]; then # shellcheck disable=SC2016 disable=SC2086
DEBIAN_FRONTEND=noninteractive apt --assume-yes --no-upgrade install "$installpkg" if [ "$(dpkg-query -W -f='${Status}' $installpkg 2>/dev/null | grep -c 'ok installed')" -eq 0 ]; then
else DEBIAN_FRONTEND=noninteractive apt --assume-yes --no-upgrade install "$installpkg"
echo "INFO: $installpkg is already installed" else
fi echo "INFO: $installpkg is already installed"
done fi
done
else
echo "Notice: Container is run read-only, skipping package installation."
echo "If you want to have additional packages installed in the container either:"
echo "- build your own image with the packages already included"
echo "- switch the container to 'read_only: false'"
fi
# copy latest config template # copy latest config template
mkdir -p /tmp/z-push/ mkdir -p /tmp/z-push/