diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/svc-flower/run b/docker/rootfs/etc/s6-overlay/s6-rc.d/svc-flower/run index a3e4b6a3e6..202adbf684 100755 --- a/docker/rootfs/etc/s6-overlay/s6-rc.d/svc-flower/run +++ b/docker/rootfs/etc/s6-overlay/s6-rc.d/svc-flower/run @@ -2,6 +2,7 @@ # shellcheck shell=bash declare -r log_prefix="[svc-flower]" +declare -r flower_config="${PAPERLESS_SRC_DIR}/paperless/flowerconfig.py" echo "${log_prefix} Checking if we should start flower..." @@ -9,12 +10,20 @@ if [[ -n "${PAPERLESS_ENABLE_FLOWER}" ]]; then # Small delay to allow celery to be up first echo "${log_prefix} Starting flower in 5s" sleep 5 - cd ${PAPERLESS_SRC_DIR} + cd "${PAPERLESS_SRC_DIR}" || exit 1 + + # Only pass --conf if the file is actually there. The image does not ship one, and + # flower >= 2.1.0 exits with FileNotFoundError when an explicitly given --conf path + # does not exist (mher/flower#1391). Earlier versions silently ignored it. + declare -a conf_args=() + if [[ -f "${flower_config}" ]]; then + conf_args=(--conf="${flower_config}") + fi if [[ -n "${USER_IS_NON_ROOT}" ]]; then - exec /usr/local/bin/celery --app paperless flower --conf=${PAPERLESS_SRC_DIR}/paperless/flowerconfig.py + exec /usr/local/bin/celery --app paperless flower "${conf_args[@]}" else - exec s6-setuidgid paperless /usr/local/bin/celery --app paperless flower --conf=${PAPERLESS_SRC_DIR}/paperless/flowerconfig.py + exec s6-setuidgid paperless /usr/local/bin/celery --app paperless flower "${conf_args[@]}" fi else