2022-07-02 10:38:08 +08:00

112 lines
1.8 KiB
Bash
Executable File

#!/bin/sh
# Author Xiaobao(xiaobao@linkease.com)
ACTION=${1}
WRLOCK=/var/lock/nextcloud.lock
LOGFILE=/var/log/nextcloud.log
LOGEND="XU6J03M6"
shift 1
IMAGE_NAME='nextcloud'
check_params() {
if [ -z "${WRLOCK}" ]; then
echo "lock file not found"
exit 1
fi
if [ -z "${LOGFILE}" ]; then
echo "logger file not found"
exit 1
fi
}
lock_run() {
local lock="$WRLOCK"
exec 300>$lock
flock -n 300 || return
do_run
flock -u 300
return
}
run_action() {
if check_params; then
lock_run
fi
}
do_install() {
echo "docker pull ${IMAGE_NAME}" >${LOGFILE}
docker pull ${IMAGE_NAME} >>${LOGFILE} 2>&1
docker rm -f nextcloud
local port=`uci get nextcloud.@nextcloud[0].port 2>/dev/null`
if [ -z "${port}" ]; then
port=8082
fi
local mntv="/mnt:/mnt"
mountpoint -q /mnt && mntv="$mntv:rslave"
docker run -d \
--name nextcloud \
--dns=172.17.0.1 \
--restart=unless-stopped \
-p ${port}:80 \
-v /mnt:/mnt:rslave \
-e TZ="Asia/Shanghai" \
${IMAGE_NAME} >>${LOGFILE} 2>&1
RET=$?
if [ "${RET}" = "0" ]; then
# mark END, remove the log file
echo ${LOGEND} >> ${LOGFILE}
sleep 5
rm -f ${LOGFILE}
else
# reserve the log
echo "docker run ${IMAGE_NAME} failed" >>${LOGFILE}
echo ${LOGEND} >> ${LOGFILE}
fi
exit ${RET}
}
# run in lock
do_run() {
case ${ACTION} in
"install")
do_install
;;
"upgrade")
do_install
;;
esac
}
usage() {
echo "usage: nextcloud sub-command"
echo "where sub-command is one of:"
echo " install Install the nextcloud"
echo " upgrade Upgrade the nextcloud"
echo " remove Remove the nextcloud"
}
case ${ACTION} in
"install")
run_action
;;
"upgrade")
run_action
;;
"remove")
docker rm -f nextcloud
;;
*)
usage
;;
esac