Merge pull request #284 from nextcloud/posix
Make container scripts posix compliant Allows the scripts to run natively in the alpine container. This allows us to remove the bash dependency of the alpine image, which saves about 6MB.
This commit is contained in:
commit
0bb418696e
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
set -e
|
set -eu
|
||||||
|
|
||||||
exec busybox crond -f -l 0 -L /dev/stdout
|
exec busybox crond -f -l 0 -L /dev/stdout
|
||||||
|
@ -1,29 +1,31 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
set -e
|
set -eu
|
||||||
|
|
||||||
# version_greater A B returns whether A > B
|
# version_greater A B returns whether A > B
|
||||||
function version_greater() {
|
version_greater() {
|
||||||
[[ "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1" ]];
|
[ "$(printf '%s\n' "$@" | sort -t '.' -n -k1,1 -k2,2 -k3,3 -k4,4 | head -n 1)" != "$1" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
# return true if specified directory is empty
|
# return true if specified directory is empty
|
||||||
function directory_empty() {
|
directory_empty() {
|
||||||
[ -n "$(find "$1"/ -prune -empty)" ]
|
[ -z "$(ls -A "$1/")" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
function run_as() {
|
run_as() {
|
||||||
if [[ $EUID -eq 0 ]]; then
|
if [ "$(id -u)" = 0 ]; then
|
||||||
su - www-data -s /bin/bash -c "$1"
|
su - www-data -s /bin/sh -c "$1"
|
||||||
else
|
else
|
||||||
bash -c "$1"
|
sh -c "$1"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
installed_version="0.0.0~unknown"
|
installed_version="0.0.0.0"
|
||||||
if [ -f /var/www/html/version.php ]; then
|
if [ -f /var/www/html/version.php ]; then
|
||||||
installed_version=$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')
|
# shellcheck disable=SC2016
|
||||||
|
installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')"
|
||||||
fi
|
fi
|
||||||
image_version=$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')
|
# shellcheck disable=SC2016
|
||||||
|
image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')"
|
||||||
|
|
||||||
if version_greater "$installed_version" "$image_version"; then
|
if version_greater "$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?"
|
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?"
|
||||||
@ -31,10 +33,10 @@ if version_greater "$installed_version" "$image_version"; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if version_greater "$image_version" "$installed_version"; then
|
if version_greater "$image_version" "$installed_version"; then
|
||||||
if [ "$installed_version" != "0.0.0~unknown" ]; then
|
if [ "$installed_version" != "0.0.0.0" ]; then
|
||||||
run_as 'php /var/www/html/occ app:list' > /tmp/list_before
|
run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before
|
||||||
fi
|
fi
|
||||||
if [[ $EUID -eq 0 ]]; then
|
if [ "$(id -u)" = 0 ]; then
|
||||||
rsync_options="-rlDog --chown www-data:root"
|
rsync_options="-rlDog --chown www-data:root"
|
||||||
else
|
else
|
||||||
rsync_options="-rlD"
|
rsync_options="-rlD"
|
||||||
@ -42,17 +44,17 @@ if version_greater "$image_version" "$installed_version"; then
|
|||||||
rsync $rsync_options --delete --exclude /config/ --exclude /data/ --exclude /custom_apps/ --exclude /themes/ /usr/src/nextcloud/ /var/www/html/
|
rsync $rsync_options --delete --exclude /config/ --exclude /data/ --exclude /custom_apps/ --exclude /themes/ /usr/src/nextcloud/ /var/www/html/
|
||||||
|
|
||||||
for dir in config data custom_apps themes; do
|
for dir in config data custom_apps themes; do
|
||||||
if [ ! -d /var/www/html/"$dir" ] || directory_empty /var/www/html/"$dir"; then
|
if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then
|
||||||
rsync $rsync_options --include /"$dir"/ --exclude '/*' /usr/src/nextcloud/ /var/www/html/
|
rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ "$installed_version" != "0.0.0~unknown" ]; then
|
if [ "$installed_version" != "0.0.0.0" ]; then
|
||||||
run_as 'php /var/www/html/occ upgrade --no-app-disable'
|
run_as 'php /var/www/html/occ upgrade --no-app-disable'
|
||||||
|
|
||||||
run_as 'php /var/www/html/occ app:list' > /tmp/list_after
|
run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after
|
||||||
echo "The following apps have beed disabled:"
|
echo "The following apps have beed disabled:"
|
||||||
diff <(sed -n "/Enabled:/,/Disabled:/p" /tmp/list_before) <(sed -n "/Enabled:/,/Disabled:/p" /tmp/list_after) | grep '<' | cut -d- -f2 | cut -d: -f1
|
diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1
|
||||||
rm -f /tmp/list_before /tmp/list_after
|
rm -f /tmp/list_before /tmp/list_after
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -4,8 +4,6 @@ FROM php:7.1-fpm-alpine
|
|||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
\
|
\
|
||||||
apk add --no-cache \
|
apk add --no-cache \
|
||||||
bash \
|
|
||||||
coreutils \
|
|
||||||
rsync \
|
rsync \
|
||||||
; \
|
; \
|
||||||
\
|
\
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
set -e
|
set -eu
|
||||||
|
|
||||||
exec busybox crond -f -l 0 -L /dev/stdout
|
exec busybox crond -f -l 0 -L /dev/stdout
|
||||||
|
@ -1,29 +1,31 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
set -e
|
set -eu
|
||||||
|
|
||||||
# version_greater A B returns whether A > B
|
# version_greater A B returns whether A > B
|
||||||
function version_greater() {
|
version_greater() {
|
||||||
[[ "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1" ]];
|
[ "$(printf '%s\n' "$@" | sort -t '.' -n -k1,1 -k2,2 -k3,3 -k4,4 | head -n 1)" != "$1" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
# return true if specified directory is empty
|
# return true if specified directory is empty
|
||||||
function directory_empty() {
|
directory_empty() {
|
||||||
[ -n "$(find "$1"/ -prune -empty)" ]
|
[ -z "$(ls -A "$1/")" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
function run_as() {
|
run_as() {
|
||||||
if [[ $EUID -eq 0 ]]; then
|
if [ "$(id -u)" = 0 ]; then
|
||||||
su - www-data -s /bin/bash -c "$1"
|
su - www-data -s /bin/sh -c "$1"
|
||||||
else
|
else
|
||||||
bash -c "$1"
|
sh -c "$1"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
installed_version="0.0.0~unknown"
|
installed_version="0.0.0.0"
|
||||||
if [ -f /var/www/html/version.php ]; then
|
if [ -f /var/www/html/version.php ]; then
|
||||||
installed_version=$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')
|
# shellcheck disable=SC2016
|
||||||
|
installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')"
|
||||||
fi
|
fi
|
||||||
image_version=$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')
|
# shellcheck disable=SC2016
|
||||||
|
image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')"
|
||||||
|
|
||||||
if version_greater "$installed_version" "$image_version"; then
|
if version_greater "$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?"
|
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?"
|
||||||
@ -31,10 +33,10 @@ if version_greater "$installed_version" "$image_version"; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if version_greater "$image_version" "$installed_version"; then
|
if version_greater "$image_version" "$installed_version"; then
|
||||||
if [ "$installed_version" != "0.0.0~unknown" ]; then
|
if [ "$installed_version" != "0.0.0.0" ]; then
|
||||||
run_as 'php /var/www/html/occ app:list' > /tmp/list_before
|
run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before
|
||||||
fi
|
fi
|
||||||
if [[ $EUID -eq 0 ]]; then
|
if [ "$(id -u)" = 0 ]; then
|
||||||
rsync_options="-rlDog --chown www-data:root"
|
rsync_options="-rlDog --chown www-data:root"
|
||||||
else
|
else
|
||||||
rsync_options="-rlD"
|
rsync_options="-rlD"
|
||||||
@ -42,17 +44,17 @@ if version_greater "$image_version" "$installed_version"; then
|
|||||||
rsync $rsync_options --delete --exclude /config/ --exclude /data/ --exclude /custom_apps/ --exclude /themes/ /usr/src/nextcloud/ /var/www/html/
|
rsync $rsync_options --delete --exclude /config/ --exclude /data/ --exclude /custom_apps/ --exclude /themes/ /usr/src/nextcloud/ /var/www/html/
|
||||||
|
|
||||||
for dir in config data custom_apps themes; do
|
for dir in config data custom_apps themes; do
|
||||||
if [ ! -d /var/www/html/"$dir" ] || directory_empty /var/www/html/"$dir"; then
|
if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then
|
||||||
rsync $rsync_options --include /"$dir"/ --exclude '/*' /usr/src/nextcloud/ /var/www/html/
|
rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ "$installed_version" != "0.0.0~unknown" ]; then
|
if [ "$installed_version" != "0.0.0.0" ]; then
|
||||||
run_as 'php /var/www/html/occ upgrade --no-app-disable'
|
run_as 'php /var/www/html/occ upgrade --no-app-disable'
|
||||||
|
|
||||||
run_as 'php /var/www/html/occ app:list' > /tmp/list_after
|
run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after
|
||||||
echo "The following apps have beed disabled:"
|
echo "The following apps have beed disabled:"
|
||||||
diff <(sed -n "/Enabled:/,/Disabled:/p" /tmp/list_before) <(sed -n "/Enabled:/,/Disabled:/p" /tmp/list_after) | grep '<' | cut -d- -f2 | cut -d: -f1
|
diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1
|
||||||
rm -f /tmp/list_before /tmp/list_after
|
rm -f /tmp/list_before /tmp/list_after
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
set -e
|
set -eu
|
||||||
|
|
||||||
exec busybox crond -f -l 0 -L /dev/stdout
|
exec busybox crond -f -l 0 -L /dev/stdout
|
||||||
|
@ -1,29 +1,31 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
set -e
|
set -eu
|
||||||
|
|
||||||
# version_greater A B returns whether A > B
|
# version_greater A B returns whether A > B
|
||||||
function version_greater() {
|
version_greater() {
|
||||||
[[ "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1" ]];
|
[ "$(printf '%s\n' "$@" | sort -t '.' -n -k1,1 -k2,2 -k3,3 -k4,4 | head -n 1)" != "$1" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
# return true if specified directory is empty
|
# return true if specified directory is empty
|
||||||
function directory_empty() {
|
directory_empty() {
|
||||||
[ -n "$(find "$1"/ -prune -empty)" ]
|
[ -z "$(ls -A "$1/")" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
function run_as() {
|
run_as() {
|
||||||
if [[ $EUID -eq 0 ]]; then
|
if [ "$(id -u)" = 0 ]; then
|
||||||
su - www-data -s /bin/bash -c "$1"
|
su - www-data -s /bin/sh -c "$1"
|
||||||
else
|
else
|
||||||
bash -c "$1"
|
sh -c "$1"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
installed_version="0.0.0~unknown"
|
installed_version="0.0.0.0"
|
||||||
if [ -f /var/www/html/version.php ]; then
|
if [ -f /var/www/html/version.php ]; then
|
||||||
installed_version=$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')
|
# shellcheck disable=SC2016
|
||||||
|
installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')"
|
||||||
fi
|
fi
|
||||||
image_version=$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')
|
# shellcheck disable=SC2016
|
||||||
|
image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')"
|
||||||
|
|
||||||
if version_greater "$installed_version" "$image_version"; then
|
if version_greater "$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?"
|
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?"
|
||||||
@ -31,10 +33,10 @@ if version_greater "$installed_version" "$image_version"; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if version_greater "$image_version" "$installed_version"; then
|
if version_greater "$image_version" "$installed_version"; then
|
||||||
if [ "$installed_version" != "0.0.0~unknown" ]; then
|
if [ "$installed_version" != "0.0.0.0" ]; then
|
||||||
run_as 'php /var/www/html/occ app:list' > /tmp/list_before
|
run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before
|
||||||
fi
|
fi
|
||||||
if [[ $EUID -eq 0 ]]; then
|
if [ "$(id -u)" = 0 ]; then
|
||||||
rsync_options="-rlDog --chown www-data:root"
|
rsync_options="-rlDog --chown www-data:root"
|
||||||
else
|
else
|
||||||
rsync_options="-rlD"
|
rsync_options="-rlD"
|
||||||
@ -42,17 +44,17 @@ if version_greater "$image_version" "$installed_version"; then
|
|||||||
rsync $rsync_options --delete --exclude /config/ --exclude /data/ --exclude /custom_apps/ --exclude /themes/ /usr/src/nextcloud/ /var/www/html/
|
rsync $rsync_options --delete --exclude /config/ --exclude /data/ --exclude /custom_apps/ --exclude /themes/ /usr/src/nextcloud/ /var/www/html/
|
||||||
|
|
||||||
for dir in config data custom_apps themes; do
|
for dir in config data custom_apps themes; do
|
||||||
if [ ! -d /var/www/html/"$dir" ] || directory_empty /var/www/html/"$dir"; then
|
if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then
|
||||||
rsync $rsync_options --include /"$dir"/ --exclude '/*' /usr/src/nextcloud/ /var/www/html/
|
rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ "$installed_version" != "0.0.0~unknown" ]; then
|
if [ "$installed_version" != "0.0.0.0" ]; then
|
||||||
run_as 'php /var/www/html/occ upgrade --no-app-disable'
|
run_as 'php /var/www/html/occ upgrade --no-app-disable'
|
||||||
|
|
||||||
run_as 'php /var/www/html/occ app:list' > /tmp/list_after
|
run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after
|
||||||
echo "The following apps have beed disabled:"
|
echo "The following apps have beed disabled:"
|
||||||
diff <(sed -n "/Enabled:/,/Disabled:/p" /tmp/list_before) <(sed -n "/Enabled:/,/Disabled:/p" /tmp/list_after) | grep '<' | cut -d- -f2 | cut -d: -f1
|
diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1
|
||||||
rm -f /tmp/list_before /tmp/list_after
|
rm -f /tmp/list_before /tmp/list_after
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
set -e
|
set -eu
|
||||||
|
|
||||||
exec busybox crond -f -l 0 -L /dev/stdout
|
exec busybox crond -f -l 0 -L /dev/stdout
|
||||||
|
@ -1,29 +1,31 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
set -e
|
set -eu
|
||||||
|
|
||||||
# version_greater A B returns whether A > B
|
# version_greater A B returns whether A > B
|
||||||
function version_greater() {
|
version_greater() {
|
||||||
[[ "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1" ]];
|
[ "$(printf '%s\n' "$@" | sort -t '.' -n -k1,1 -k2,2 -k3,3 -k4,4 | head -n 1)" != "$1" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
# return true if specified directory is empty
|
# return true if specified directory is empty
|
||||||
function directory_empty() {
|
directory_empty() {
|
||||||
[ -n "$(find "$1"/ -prune -empty)" ]
|
[ -z "$(ls -A "$1/")" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
function run_as() {
|
run_as() {
|
||||||
if [[ $EUID -eq 0 ]]; then
|
if [ "$(id -u)" = 0 ]; then
|
||||||
su - www-data -s /bin/bash -c "$1"
|
su - www-data -s /bin/sh -c "$1"
|
||||||
else
|
else
|
||||||
bash -c "$1"
|
sh -c "$1"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
installed_version="0.0.0~unknown"
|
installed_version="0.0.0.0"
|
||||||
if [ -f /var/www/html/version.php ]; then
|
if [ -f /var/www/html/version.php ]; then
|
||||||
installed_version=$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')
|
# shellcheck disable=SC2016
|
||||||
|
installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')"
|
||||||
fi
|
fi
|
||||||
image_version=$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')
|
# shellcheck disable=SC2016
|
||||||
|
image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')"
|
||||||
|
|
||||||
if version_greater "$installed_version" "$image_version"; then
|
if version_greater "$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?"
|
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?"
|
||||||
@ -31,10 +33,10 @@ if version_greater "$installed_version" "$image_version"; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if version_greater "$image_version" "$installed_version"; then
|
if version_greater "$image_version" "$installed_version"; then
|
||||||
if [ "$installed_version" != "0.0.0~unknown" ]; then
|
if [ "$installed_version" != "0.0.0.0" ]; then
|
||||||
run_as 'php /var/www/html/occ app:list' > /tmp/list_before
|
run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before
|
||||||
fi
|
fi
|
||||||
if [[ $EUID -eq 0 ]]; then
|
if [ "$(id -u)" = 0 ]; then
|
||||||
rsync_options="-rlDog --chown www-data:root"
|
rsync_options="-rlDog --chown www-data:root"
|
||||||
else
|
else
|
||||||
rsync_options="-rlD"
|
rsync_options="-rlD"
|
||||||
@ -42,17 +44,17 @@ if version_greater "$image_version" "$installed_version"; then
|
|||||||
rsync $rsync_options --delete --exclude /config/ --exclude /data/ --exclude /custom_apps/ --exclude /themes/ /usr/src/nextcloud/ /var/www/html/
|
rsync $rsync_options --delete --exclude /config/ --exclude /data/ --exclude /custom_apps/ --exclude /themes/ /usr/src/nextcloud/ /var/www/html/
|
||||||
|
|
||||||
for dir in config data custom_apps themes; do
|
for dir in config data custom_apps themes; do
|
||||||
if [ ! -d /var/www/html/"$dir" ] || directory_empty /var/www/html/"$dir"; then
|
if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then
|
||||||
rsync $rsync_options --include /"$dir"/ --exclude '/*' /usr/src/nextcloud/ /var/www/html/
|
rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ "$installed_version" != "0.0.0~unknown" ]; then
|
if [ "$installed_version" != "0.0.0.0" ]; then
|
||||||
run_as 'php /var/www/html/occ upgrade --no-app-disable'
|
run_as 'php /var/www/html/occ upgrade --no-app-disable'
|
||||||
|
|
||||||
run_as 'php /var/www/html/occ app:list' > /tmp/list_after
|
run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after
|
||||||
echo "The following apps have beed disabled:"
|
echo "The following apps have beed disabled:"
|
||||||
diff <(sed -n "/Enabled:/,/Disabled:/p" /tmp/list_before) <(sed -n "/Enabled:/,/Disabled:/p" /tmp/list_after) | grep '<' | cut -d- -f2 | cut -d: -f1
|
diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1
|
||||||
rm -f /tmp/list_before /tmp/list_after
|
rm -f /tmp/list_before /tmp/list_after
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -4,8 +4,6 @@ FROM php:7.1-fpm-alpine
|
|||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
\
|
\
|
||||||
apk add --no-cache \
|
apk add --no-cache \
|
||||||
bash \
|
|
||||||
coreutils \
|
|
||||||
rsync \
|
rsync \
|
||||||
; \
|
; \
|
||||||
\
|
\
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
set -e
|
set -eu
|
||||||
|
|
||||||
exec busybox crond -f -l 0 -L /dev/stdout
|
exec busybox crond -f -l 0 -L /dev/stdout
|
||||||
|
@ -1,29 +1,31 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
set -e
|
set -eu
|
||||||
|
|
||||||
# version_greater A B returns whether A > B
|
# version_greater A B returns whether A > B
|
||||||
function version_greater() {
|
version_greater() {
|
||||||
[[ "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1" ]];
|
[ "$(printf '%s\n' "$@" | sort -t '.' -n -k1,1 -k2,2 -k3,3 -k4,4 | head -n 1)" != "$1" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
# return true if specified directory is empty
|
# return true if specified directory is empty
|
||||||
function directory_empty() {
|
directory_empty() {
|
||||||
[ -n "$(find "$1"/ -prune -empty)" ]
|
[ -z "$(ls -A "$1/")" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
function run_as() {
|
run_as() {
|
||||||
if [[ $EUID -eq 0 ]]; then
|
if [ "$(id -u)" = 0 ]; then
|
||||||
su - www-data -s /bin/bash -c "$1"
|
su - www-data -s /bin/sh -c "$1"
|
||||||
else
|
else
|
||||||
bash -c "$1"
|
sh -c "$1"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
installed_version="0.0.0~unknown"
|
installed_version="0.0.0.0"
|
||||||
if [ -f /var/www/html/version.php ]; then
|
if [ -f /var/www/html/version.php ]; then
|
||||||
installed_version=$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')
|
# shellcheck disable=SC2016
|
||||||
|
installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')"
|
||||||
fi
|
fi
|
||||||
image_version=$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')
|
# shellcheck disable=SC2016
|
||||||
|
image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')"
|
||||||
|
|
||||||
if version_greater "$installed_version" "$image_version"; then
|
if version_greater "$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?"
|
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?"
|
||||||
@ -31,10 +33,10 @@ if version_greater "$installed_version" "$image_version"; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if version_greater "$image_version" "$installed_version"; then
|
if version_greater "$image_version" "$installed_version"; then
|
||||||
if [ "$installed_version" != "0.0.0~unknown" ]; then
|
if [ "$installed_version" != "0.0.0.0" ]; then
|
||||||
run_as 'php /var/www/html/occ app:list' > /tmp/list_before
|
run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before
|
||||||
fi
|
fi
|
||||||
if [[ $EUID -eq 0 ]]; then
|
if [ "$(id -u)" = 0 ]; then
|
||||||
rsync_options="-rlDog --chown www-data:root"
|
rsync_options="-rlDog --chown www-data:root"
|
||||||
else
|
else
|
||||||
rsync_options="-rlD"
|
rsync_options="-rlD"
|
||||||
@ -42,17 +44,17 @@ if version_greater "$image_version" "$installed_version"; then
|
|||||||
rsync $rsync_options --delete --exclude /config/ --exclude /data/ --exclude /custom_apps/ --exclude /themes/ /usr/src/nextcloud/ /var/www/html/
|
rsync $rsync_options --delete --exclude /config/ --exclude /data/ --exclude /custom_apps/ --exclude /themes/ /usr/src/nextcloud/ /var/www/html/
|
||||||
|
|
||||||
for dir in config data custom_apps themes; do
|
for dir in config data custom_apps themes; do
|
||||||
if [ ! -d /var/www/html/"$dir" ] || directory_empty /var/www/html/"$dir"; then
|
if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then
|
||||||
rsync $rsync_options --include /"$dir"/ --exclude '/*' /usr/src/nextcloud/ /var/www/html/
|
rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ "$installed_version" != "0.0.0~unknown" ]; then
|
if [ "$installed_version" != "0.0.0.0" ]; then
|
||||||
run_as 'php /var/www/html/occ upgrade --no-app-disable'
|
run_as 'php /var/www/html/occ upgrade --no-app-disable'
|
||||||
|
|
||||||
run_as 'php /var/www/html/occ app:list' > /tmp/list_after
|
run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after
|
||||||
echo "The following apps have beed disabled:"
|
echo "The following apps have beed disabled:"
|
||||||
diff <(sed -n "/Enabled:/,/Disabled:/p" /tmp/list_before) <(sed -n "/Enabled:/,/Disabled:/p" /tmp/list_after) | grep '<' | cut -d- -f2 | cut -d: -f1
|
diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1
|
||||||
rm -f /tmp/list_before /tmp/list_after
|
rm -f /tmp/list_before /tmp/list_after
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
set -e
|
set -eu
|
||||||
|
|
||||||
exec busybox crond -f -l 0 -L /dev/stdout
|
exec busybox crond -f -l 0 -L /dev/stdout
|
||||||
|
@ -1,29 +1,31 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
set -e
|
set -eu
|
||||||
|
|
||||||
# version_greater A B returns whether A > B
|
# version_greater A B returns whether A > B
|
||||||
function version_greater() {
|
version_greater() {
|
||||||
[[ "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1" ]];
|
[ "$(printf '%s\n' "$@" | sort -t '.' -n -k1,1 -k2,2 -k3,3 -k4,4 | head -n 1)" != "$1" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
# return true if specified directory is empty
|
# return true if specified directory is empty
|
||||||
function directory_empty() {
|
directory_empty() {
|
||||||
[ -n "$(find "$1"/ -prune -empty)" ]
|
[ -z "$(ls -A "$1/")" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
function run_as() {
|
run_as() {
|
||||||
if [[ $EUID -eq 0 ]]; then
|
if [ "$(id -u)" = 0 ]; then
|
||||||
su - www-data -s /bin/bash -c "$1"
|
su - www-data -s /bin/sh -c "$1"
|
||||||
else
|
else
|
||||||
bash -c "$1"
|
sh -c "$1"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
installed_version="0.0.0~unknown"
|
installed_version="0.0.0.0"
|
||||||
if [ -f /var/www/html/version.php ]; then
|
if [ -f /var/www/html/version.php ]; then
|
||||||
installed_version=$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')
|
# shellcheck disable=SC2016
|
||||||
|
installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')"
|
||||||
fi
|
fi
|
||||||
image_version=$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')
|
# shellcheck disable=SC2016
|
||||||
|
image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')"
|
||||||
|
|
||||||
if version_greater "$installed_version" "$image_version"; then
|
if version_greater "$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?"
|
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?"
|
||||||
@ -31,10 +33,10 @@ if version_greater "$installed_version" "$image_version"; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if version_greater "$image_version" "$installed_version"; then
|
if version_greater "$image_version" "$installed_version"; then
|
||||||
if [ "$installed_version" != "0.0.0~unknown" ]; then
|
if [ "$installed_version" != "0.0.0.0" ]; then
|
||||||
run_as 'php /var/www/html/occ app:list' > /tmp/list_before
|
run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before
|
||||||
fi
|
fi
|
||||||
if [[ $EUID -eq 0 ]]; then
|
if [ "$(id -u)" = 0 ]; then
|
||||||
rsync_options="-rlDog --chown www-data:root"
|
rsync_options="-rlDog --chown www-data:root"
|
||||||
else
|
else
|
||||||
rsync_options="-rlD"
|
rsync_options="-rlD"
|
||||||
@ -42,17 +44,17 @@ if version_greater "$image_version" "$installed_version"; then
|
|||||||
rsync $rsync_options --delete --exclude /config/ --exclude /data/ --exclude /custom_apps/ --exclude /themes/ /usr/src/nextcloud/ /var/www/html/
|
rsync $rsync_options --delete --exclude /config/ --exclude /data/ --exclude /custom_apps/ --exclude /themes/ /usr/src/nextcloud/ /var/www/html/
|
||||||
|
|
||||||
for dir in config data custom_apps themes; do
|
for dir in config data custom_apps themes; do
|
||||||
if [ ! -d /var/www/html/"$dir" ] || directory_empty /var/www/html/"$dir"; then
|
if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then
|
||||||
rsync $rsync_options --include /"$dir"/ --exclude '/*' /usr/src/nextcloud/ /var/www/html/
|
rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ "$installed_version" != "0.0.0~unknown" ]; then
|
if [ "$installed_version" != "0.0.0.0" ]; then
|
||||||
run_as 'php /var/www/html/occ upgrade --no-app-disable'
|
run_as 'php /var/www/html/occ upgrade --no-app-disable'
|
||||||
|
|
||||||
run_as 'php /var/www/html/occ app:list' > /tmp/list_after
|
run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after
|
||||||
echo "The following apps have beed disabled:"
|
echo "The following apps have beed disabled:"
|
||||||
diff <(sed -n "/Enabled:/,/Disabled:/p" /tmp/list_before) <(sed -n "/Enabled:/,/Disabled:/p" /tmp/list_after) | grep '<' | cut -d- -f2 | cut -d: -f1
|
diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1
|
||||||
rm -f /tmp/list_before /tmp/list_after
|
rm -f /tmp/list_before /tmp/list_after
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
set -e
|
set -eu
|
||||||
|
|
||||||
exec busybox crond -f -l 0 -L /dev/stdout
|
exec busybox crond -f -l 0 -L /dev/stdout
|
||||||
|
@ -1,29 +1,31 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
set -e
|
set -eu
|
||||||
|
|
||||||
# version_greater A B returns whether A > B
|
# version_greater A B returns whether A > B
|
||||||
function version_greater() {
|
version_greater() {
|
||||||
[[ "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1" ]];
|
[ "$(printf '%s\n' "$@" | sort -t '.' -n -k1,1 -k2,2 -k3,3 -k4,4 | head -n 1)" != "$1" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
# return true if specified directory is empty
|
# return true if specified directory is empty
|
||||||
function directory_empty() {
|
directory_empty() {
|
||||||
[ -n "$(find "$1"/ -prune -empty)" ]
|
[ -z "$(ls -A "$1/")" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
function run_as() {
|
run_as() {
|
||||||
if [[ $EUID -eq 0 ]]; then
|
if [ "$(id -u)" = 0 ]; then
|
||||||
su - www-data -s /bin/bash -c "$1"
|
su - www-data -s /bin/sh -c "$1"
|
||||||
else
|
else
|
||||||
bash -c "$1"
|
sh -c "$1"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
installed_version="0.0.0~unknown"
|
installed_version="0.0.0.0"
|
||||||
if [ -f /var/www/html/version.php ]; then
|
if [ -f /var/www/html/version.php ]; then
|
||||||
installed_version=$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')
|
# shellcheck disable=SC2016
|
||||||
|
installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')"
|
||||||
fi
|
fi
|
||||||
image_version=$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')
|
# shellcheck disable=SC2016
|
||||||
|
image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')"
|
||||||
|
|
||||||
if version_greater "$installed_version" "$image_version"; then
|
if version_greater "$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?"
|
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?"
|
||||||
@ -31,10 +33,10 @@ if version_greater "$installed_version" "$image_version"; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if version_greater "$image_version" "$installed_version"; then
|
if version_greater "$image_version" "$installed_version"; then
|
||||||
if [ "$installed_version" != "0.0.0~unknown" ]; then
|
if [ "$installed_version" != "0.0.0.0" ]; then
|
||||||
run_as 'php /var/www/html/occ app:list' > /tmp/list_before
|
run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before
|
||||||
fi
|
fi
|
||||||
if [[ $EUID -eq 0 ]]; then
|
if [ "$(id -u)" = 0 ]; then
|
||||||
rsync_options="-rlDog --chown www-data:root"
|
rsync_options="-rlDog --chown www-data:root"
|
||||||
else
|
else
|
||||||
rsync_options="-rlD"
|
rsync_options="-rlD"
|
||||||
@ -42,17 +44,17 @@ if version_greater "$image_version" "$installed_version"; then
|
|||||||
rsync $rsync_options --delete --exclude /config/ --exclude /data/ --exclude /custom_apps/ --exclude /themes/ /usr/src/nextcloud/ /var/www/html/
|
rsync $rsync_options --delete --exclude /config/ --exclude /data/ --exclude /custom_apps/ --exclude /themes/ /usr/src/nextcloud/ /var/www/html/
|
||||||
|
|
||||||
for dir in config data custom_apps themes; do
|
for dir in config data custom_apps themes; do
|
||||||
if [ ! -d /var/www/html/"$dir" ] || directory_empty /var/www/html/"$dir"; then
|
if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then
|
||||||
rsync $rsync_options --include /"$dir"/ --exclude '/*' /usr/src/nextcloud/ /var/www/html/
|
rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ "$installed_version" != "0.0.0~unknown" ]; then
|
if [ "$installed_version" != "0.0.0.0" ]; then
|
||||||
run_as 'php /var/www/html/occ upgrade --no-app-disable'
|
run_as 'php /var/www/html/occ upgrade --no-app-disable'
|
||||||
|
|
||||||
run_as 'php /var/www/html/occ app:list' > /tmp/list_after
|
run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after
|
||||||
echo "The following apps have beed disabled:"
|
echo "The following apps have beed disabled:"
|
||||||
diff <(sed -n "/Enabled:/,/Disabled:/p" /tmp/list_before) <(sed -n "/Enabled:/,/Disabled:/p" /tmp/list_after) | grep '<' | cut -d- -f2 | cut -d: -f1
|
diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1
|
||||||
rm -f /tmp/list_before /tmp/list_after
|
rm -f /tmp/list_before /tmp/list_after
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -4,8 +4,6 @@ FROM php:7.1-fpm-alpine
|
|||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
\
|
\
|
||||||
apk add --no-cache \
|
apk add --no-cache \
|
||||||
bash \
|
|
||||||
coreutils \
|
|
||||||
rsync \
|
rsync \
|
||||||
; \
|
; \
|
||||||
\
|
\
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
set -e
|
set -eu
|
||||||
|
|
||||||
exec busybox crond -f -l 0 -L /dev/stdout
|
exec busybox crond -f -l 0 -L /dev/stdout
|
||||||
|
@ -1,29 +1,31 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
set -e
|
set -eu
|
||||||
|
|
||||||
# version_greater A B returns whether A > B
|
# version_greater A B returns whether A > B
|
||||||
function version_greater() {
|
version_greater() {
|
||||||
[[ "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1" ]];
|
[ "$(printf '%s\n' "$@" | sort -t '.' -n -k1,1 -k2,2 -k3,3 -k4,4 | head -n 1)" != "$1" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
# return true if specified directory is empty
|
# return true if specified directory is empty
|
||||||
function directory_empty() {
|
directory_empty() {
|
||||||
[ -n "$(find "$1"/ -prune -empty)" ]
|
[ -z "$(ls -A "$1/")" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
function run_as() {
|
run_as() {
|
||||||
if [[ $EUID -eq 0 ]]; then
|
if [ "$(id -u)" = 0 ]; then
|
||||||
su - www-data -s /bin/bash -c "$1"
|
su - www-data -s /bin/sh -c "$1"
|
||||||
else
|
else
|
||||||
bash -c "$1"
|
sh -c "$1"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
installed_version="0.0.0~unknown"
|
installed_version="0.0.0.0"
|
||||||
if [ -f /var/www/html/version.php ]; then
|
if [ -f /var/www/html/version.php ]; then
|
||||||
installed_version=$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')
|
# shellcheck disable=SC2016
|
||||||
|
installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')"
|
||||||
fi
|
fi
|
||||||
image_version=$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')
|
# shellcheck disable=SC2016
|
||||||
|
image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')"
|
||||||
|
|
||||||
if version_greater "$installed_version" "$image_version"; then
|
if version_greater "$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?"
|
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?"
|
||||||
@ -31,10 +33,10 @@ if version_greater "$installed_version" "$image_version"; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if version_greater "$image_version" "$installed_version"; then
|
if version_greater "$image_version" "$installed_version"; then
|
||||||
if [ "$installed_version" != "0.0.0~unknown" ]; then
|
if [ "$installed_version" != "0.0.0.0" ]; then
|
||||||
run_as 'php /var/www/html/occ app:list' > /tmp/list_before
|
run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before
|
||||||
fi
|
fi
|
||||||
if [[ $EUID -eq 0 ]]; then
|
if [ "$(id -u)" = 0 ]; then
|
||||||
rsync_options="-rlDog --chown www-data:root"
|
rsync_options="-rlDog --chown www-data:root"
|
||||||
else
|
else
|
||||||
rsync_options="-rlD"
|
rsync_options="-rlD"
|
||||||
@ -42,17 +44,17 @@ if version_greater "$image_version" "$installed_version"; then
|
|||||||
rsync $rsync_options --delete --exclude /config/ --exclude /data/ --exclude /custom_apps/ --exclude /themes/ /usr/src/nextcloud/ /var/www/html/
|
rsync $rsync_options --delete --exclude /config/ --exclude /data/ --exclude /custom_apps/ --exclude /themes/ /usr/src/nextcloud/ /var/www/html/
|
||||||
|
|
||||||
for dir in config data custom_apps themes; do
|
for dir in config data custom_apps themes; do
|
||||||
if [ ! -d /var/www/html/"$dir" ] || directory_empty /var/www/html/"$dir"; then
|
if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then
|
||||||
rsync $rsync_options --include /"$dir"/ --exclude '/*' /usr/src/nextcloud/ /var/www/html/
|
rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ "$installed_version" != "0.0.0~unknown" ]; then
|
if [ "$installed_version" != "0.0.0.0" ]; then
|
||||||
run_as 'php /var/www/html/occ upgrade --no-app-disable'
|
run_as 'php /var/www/html/occ upgrade --no-app-disable'
|
||||||
|
|
||||||
run_as 'php /var/www/html/occ app:list' > /tmp/list_after
|
run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after
|
||||||
echo "The following apps have beed disabled:"
|
echo "The following apps have beed disabled:"
|
||||||
diff <(sed -n "/Enabled:/,/Disabled:/p" /tmp/list_before) <(sed -n "/Enabled:/,/Disabled:/p" /tmp/list_after) | grep '<' | cut -d- -f2 | cut -d: -f1
|
diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1
|
||||||
rm -f /tmp/list_before /tmp/list_after
|
rm -f /tmp/list_before /tmp/list_after
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
set -e
|
set -eu
|
||||||
|
|
||||||
exec busybox crond -f -l 0 -L /dev/stdout
|
exec busybox crond -f -l 0 -L /dev/stdout
|
||||||
|
@ -1,29 +1,31 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
set -e
|
set -eu
|
||||||
|
|
||||||
# version_greater A B returns whether A > B
|
# version_greater A B returns whether A > B
|
||||||
function version_greater() {
|
version_greater() {
|
||||||
[[ "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1" ]];
|
[ "$(printf '%s\n' "$@" | sort -t '.' -n -k1,1 -k2,2 -k3,3 -k4,4 | head -n 1)" != "$1" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
# return true if specified directory is empty
|
# return true if specified directory is empty
|
||||||
function directory_empty() {
|
directory_empty() {
|
||||||
[ -n "$(find "$1"/ -prune -empty)" ]
|
[ -z "$(ls -A "$1/")" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
function run_as() {
|
run_as() {
|
||||||
if [[ $EUID -eq 0 ]]; then
|
if [ "$(id -u)" = 0 ]; then
|
||||||
su - www-data -s /bin/bash -c "$1"
|
su - www-data -s /bin/sh -c "$1"
|
||||||
else
|
else
|
||||||
bash -c "$1"
|
sh -c "$1"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
installed_version="0.0.0~unknown"
|
installed_version="0.0.0.0"
|
||||||
if [ -f /var/www/html/version.php ]; then
|
if [ -f /var/www/html/version.php ]; then
|
||||||
installed_version=$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')
|
# shellcheck disable=SC2016
|
||||||
|
installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')"
|
||||||
fi
|
fi
|
||||||
image_version=$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')
|
# shellcheck disable=SC2016
|
||||||
|
image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')"
|
||||||
|
|
||||||
if version_greater "$installed_version" "$image_version"; then
|
if version_greater "$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?"
|
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?"
|
||||||
@ -31,10 +33,10 @@ if version_greater "$installed_version" "$image_version"; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if version_greater "$image_version" "$installed_version"; then
|
if version_greater "$image_version" "$installed_version"; then
|
||||||
if [ "$installed_version" != "0.0.0~unknown" ]; then
|
if [ "$installed_version" != "0.0.0.0" ]; then
|
||||||
run_as 'php /var/www/html/occ app:list' > /tmp/list_before
|
run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before
|
||||||
fi
|
fi
|
||||||
if [[ $EUID -eq 0 ]]; then
|
if [ "$(id -u)" = 0 ]; then
|
||||||
rsync_options="-rlDog --chown www-data:root"
|
rsync_options="-rlDog --chown www-data:root"
|
||||||
else
|
else
|
||||||
rsync_options="-rlD"
|
rsync_options="-rlD"
|
||||||
@ -42,17 +44,17 @@ if version_greater "$image_version" "$installed_version"; then
|
|||||||
rsync $rsync_options --delete --exclude /config/ --exclude /data/ --exclude /custom_apps/ --exclude /themes/ /usr/src/nextcloud/ /var/www/html/
|
rsync $rsync_options --delete --exclude /config/ --exclude /data/ --exclude /custom_apps/ --exclude /themes/ /usr/src/nextcloud/ /var/www/html/
|
||||||
|
|
||||||
for dir in config data custom_apps themes; do
|
for dir in config data custom_apps themes; do
|
||||||
if [ ! -d /var/www/html/"$dir" ] || directory_empty /var/www/html/"$dir"; then
|
if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then
|
||||||
rsync $rsync_options --include /"$dir"/ --exclude '/*' /usr/src/nextcloud/ /var/www/html/
|
rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ "$installed_version" != "0.0.0~unknown" ]; then
|
if [ "$installed_version" != "0.0.0.0" ]; then
|
||||||
run_as 'php /var/www/html/occ upgrade --no-app-disable'
|
run_as 'php /var/www/html/occ upgrade --no-app-disable'
|
||||||
|
|
||||||
run_as 'php /var/www/html/occ app:list' > /tmp/list_after
|
run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after
|
||||||
echo "The following apps have beed disabled:"
|
echo "The following apps have beed disabled:"
|
||||||
diff <(sed -n "/Enabled:/,/Disabled:/p" /tmp/list_before) <(sed -n "/Enabled:/,/Disabled:/p" /tmp/list_after) | grep '<' | cut -d- -f2 | cut -d: -f1
|
diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1
|
||||||
rm -f /tmp/list_before /tmp/list_after
|
rm -f /tmp/list_before /tmp/list_after
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -4,8 +4,6 @@ FROM php:%%PHP_VERSION%%-%%VARIANT%%
|
|||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
\
|
\
|
||||||
apk add --no-cache \
|
apk add --no-cache \
|
||||||
bash \
|
|
||||||
coreutils \
|
|
||||||
rsync \
|
rsync \
|
||||||
; \
|
; \
|
||||||
\
|
\
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
set -e
|
set -eu
|
||||||
|
|
||||||
exec busybox crond -f -l 0 -L /dev/stdout
|
exec busybox crond -f -l 0 -L /dev/stdout
|
||||||
|
@ -1,29 +1,31 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
set -e
|
set -eu
|
||||||
|
|
||||||
# version_greater A B returns whether A > B
|
# version_greater A B returns whether A > B
|
||||||
function version_greater() {
|
version_greater() {
|
||||||
[[ "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1" ]];
|
[ "$(printf '%s\n' "$@" | sort -t '.' -n -k1,1 -k2,2 -k3,3 -k4,4 | head -n 1)" != "$1" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
# return true if specified directory is empty
|
# return true if specified directory is empty
|
||||||
function directory_empty() {
|
directory_empty() {
|
||||||
[ -n "$(find "$1"/ -prune -empty)" ]
|
[ -z "$(ls -A "$1/")" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
function run_as() {
|
run_as() {
|
||||||
if [[ $EUID -eq 0 ]]; then
|
if [ "$(id -u)" = 0 ]; then
|
||||||
su - www-data -s /bin/bash -c "$1"
|
su - www-data -s /bin/sh -c "$1"
|
||||||
else
|
else
|
||||||
bash -c "$1"
|
sh -c "$1"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
installed_version="0.0.0~unknown"
|
installed_version="0.0.0.0"
|
||||||
if [ -f /var/www/html/version.php ]; then
|
if [ -f /var/www/html/version.php ]; then
|
||||||
installed_version=$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')
|
# shellcheck disable=SC2016
|
||||||
|
installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')"
|
||||||
fi
|
fi
|
||||||
image_version=$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')
|
# shellcheck disable=SC2016
|
||||||
|
image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')"
|
||||||
|
|
||||||
if version_greater "$installed_version" "$image_version"; then
|
if version_greater "$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?"
|
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?"
|
||||||
@ -31,10 +33,10 @@ if version_greater "$installed_version" "$image_version"; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if version_greater "$image_version" "$installed_version"; then
|
if version_greater "$image_version" "$installed_version"; then
|
||||||
if [ "$installed_version" != "0.0.0~unknown" ]; then
|
if [ "$installed_version" != "0.0.0.0" ]; then
|
||||||
run_as 'php /var/www/html/occ app:list' > /tmp/list_before
|
run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before
|
||||||
fi
|
fi
|
||||||
if [[ $EUID -eq 0 ]]; then
|
if [ "$(id -u)" = 0 ]; then
|
||||||
rsync_options="-rlDog --chown www-data:root"
|
rsync_options="-rlDog --chown www-data:root"
|
||||||
else
|
else
|
||||||
rsync_options="-rlD"
|
rsync_options="-rlD"
|
||||||
@ -42,17 +44,17 @@ if version_greater "$image_version" "$installed_version"; then
|
|||||||
rsync $rsync_options --delete --exclude /config/ --exclude /data/ --exclude /custom_apps/ --exclude /themes/ /usr/src/nextcloud/ /var/www/html/
|
rsync $rsync_options --delete --exclude /config/ --exclude /data/ --exclude /custom_apps/ --exclude /themes/ /usr/src/nextcloud/ /var/www/html/
|
||||||
|
|
||||||
for dir in config data custom_apps themes; do
|
for dir in config data custom_apps themes; do
|
||||||
if [ ! -d /var/www/html/"$dir" ] || directory_empty /var/www/html/"$dir"; then
|
if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then
|
||||||
rsync $rsync_options --include /"$dir"/ --exclude '/*' /usr/src/nextcloud/ /var/www/html/
|
rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ "$installed_version" != "0.0.0~unknown" ]; then
|
if [ "$installed_version" != "0.0.0.0" ]; then
|
||||||
run_as 'php /var/www/html/occ upgrade --no-app-disable'
|
run_as 'php /var/www/html/occ upgrade --no-app-disable'
|
||||||
|
|
||||||
run_as 'php /var/www/html/occ app:list' > /tmp/list_after
|
run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after
|
||||||
echo "The following apps have beed disabled:"
|
echo "The following apps have beed disabled:"
|
||||||
diff <(sed -n "/Enabled:/,/Disabled:/p" /tmp/list_before) <(sed -n "/Enabled:/,/Disabled:/p" /tmp/list_after) | grep '<' | cut -d- -f2 | cut -d: -f1
|
diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1
|
||||||
rm -f /tmp/list_before /tmp/list_after
|
rm -f /tmp/list_before /tmp/list_after
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
Loading…
Reference in New Issue
Block a user