Reorder init logic again

Migrate before symlink
Don't copy persistent data into container
Fix datadirectory file

Signed-off-by: Eric Nemchik <eric@nemchik.com>
This commit is contained in:
Eric Nemchik 2023-06-06 15:42:21 -05:00
parent 14bc5e1aa5
commit 4646cd7d45
No known key found for this signature in database

View File

@ -11,41 +11,32 @@ mkdir -p \
/config/www/nextcloud/themes \
/data
# migrate legacy install (copy inside container)
if [ -f /config/www/nextcloud/version.php ]; then
echo "Migrating legacy install"
rsync -rlD --delete --exclude-from=/app/upgrade.exclude /config/www/nextcloud/ /app/www/public/
rsync -rlD --delete --include '/version.php' --exclude '/*' /config/www/nextcloud/ /app/www/public/
touch /tmp/full_chown
fi
# copy defaults
if [[ ! -f /app/www/public/config/config.php ]]; then
cp /defaults/config.php /app/www/public/config/config.php
fi
datadirectory=$(php -r "require '/app/www/public/version.php'; echo \$CONFIG['datadirectory'];")
datadirectory=$(php -r "require '/app/www/public/config/config.php'; echo \$CONFIG['datadirectory'];")
# symlink folders
for dir in config data custom_apps themes; do
if [ "${dir}" = "data" ]; then
if [ "$(readlink /app/www/public/${dir})" != "${datadirectory}" ]; then
rm -rf "/app/www/public/${dir}"
ln -s "${datadirectory}" "/app/www/public/${dir}"
fi
continue
fi
if [ "$(readlink /app/www/public/data)" != "${datadirectory}" ]; then
rm -rf /app/www/public/data
ln -s "${datadirectory}" /app/www/public/data
fi
for dir in config custom_apps themes; do
if [ "$(readlink /app/www/public/${dir})" != "/config/www/nextcloud/${dir}" ]; then
rm -rf "/app/www/public/${dir}"
ln -s "/config/www/nextcloud/${dir}" "/app/www/public/${dir}"
fi
done
# migrate legacy install (copy inside container)
if [ -f /config/www/nextcloud/version.php ]; then
echo "Migrating legacy install"
rsync -rlD --delete --exclude-from=/app/upgrade.exclude /config/www/nextcloud/ /app/www/public/
for dir in config custom_apps themes; do
if [ -z "$(ls -A /app/www/public/${dir}/)" ]; then
rsync -rlD --include "/${dir}/" --exclude '/*' /config/www/nextcloud/ /app/www/public/
fi
done
rsync -rlD --include '/version.php' --exclude '/*' /config/www/nextcloud/ /app/www/public/
rm -f /config/www/nextcloud/version.php
touch /tmp/full_chown
fi
# install app
vergte() { printf '%s\n%s' "${2}" "${1}" | sort -C -V; }
vergt() { ! vergte "${2}" "${1}"; }
@ -54,9 +45,9 @@ verlt() { ! verlte "${2}" "${1}"; }
installed_version="0.0.0.0"
if [ -f /app/www/public/version.php ]; then
installed_version=$(php -r "require '/app/www/public/version.php'; echo implode('.', \$OC_Version);")
installed_version=$(php -r "require '/app/www/public/version.php'; echo implode('.', \$OC_Version);" 2>/dev/null)
fi
image_version=$(php -r "require '/app/www/src/version.php'; echo implode('.', \$OC_Version);")
image_version=$(php -r "require '/app/www/src/version.php'; echo implode('.', \$OC_Version);" 2>/dev/null)
if vergt "${installed_version}" "${image_version}"; then
echo "Can't start Nextcloud because the version of the data (${installed_version}) is higher than the docker image version (${image_version}) and downgrading is not supported. Are you sure you have pulled the newest image version?"
@ -72,7 +63,7 @@ if vergt "${image_version}" "${installed_version}"; then
rsync -rlD --delete --exclude-from=/app/upgrade.exclude /app/www/src/ /app/www/public/
for dir in config data custom_apps themes; do
if [ -z "$(ls -A /app/www/public/${dir}/)" ]; then
if [ -z "$(ls -A /app/www/public/${dir}/ 2>/dev/null)" ]; then
rsync -rlD --include "/${dir}/" --exclude '/*' /app/www/src/ /app/www/public/
fi
done