nas-tools/docker/entrypoint.sh
2023-02-13 12:52:00 +08:00

101 lines
4.1 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
cd ${WORKDIR}
if [ "${NASTOOL_AUTO_UPDATE}" = "true" ]; then
if [ ! -s /tmp/requirements.txt.sha256sum ]; then
sha256sum requirements.txt > /tmp/requirements.txt.sha256sum
fi
if [ ! -s /tmp/third_party.txt.sha256sum ]; then
sha256sum third_party.txt > /tmp/third_party.txt.sha256sum
fi
if [ "${NASTOOL_VERSION}" != "lite" ]; then
if [ ! -s /tmp/package_list.txt.sha256sum ]; then
sha256sum package_list.txt > /tmp/package_list.txt.sha256sum
fi
fi
echo "更新程序..."
git remote set-url origin "${REPO_URL}" &> /dev/null
echo "windows/" > .gitignore
if [ "${NASTOOL_VERSION}" == "dev" ]; then
branch="dev"
else
branch="master"
fi
git clean -dffx
git fetch --depth 1 origin ${branch}
git reset --hard origin/${branch}
if [ $? -eq 0 ]; then
echo "更新成功..."
# Python依赖包更新
hash_old=$(cat /tmp/requirements.txt.sha256sum)
hash_new=$(sha256sum requirements.txt)
if [ "${hash_old}" != "${hash_new}" ]; then
echo "检测到requirements.txt有变化重新安装依赖..."
if [ "${NASTOOL_CN_UPDATE}" = "true" ]; then
pip install --upgrade pip setuptools wheel -i "${PYPI_MIRROR}"
pip install -r requirements.txt -i "${PYPI_MIRROR}"
else
pip install --upgrade pip setuptools wheel
pip install -r requirements.txt
fi
if [ $? -ne 0 ]; then
echo "无法安装依赖,请更新镜像..."
else
echo "依赖安装成功..."
sha256sum requirements.txt > /tmp/requirements.txt.sha256sum
hash_old=$(cat /tmp/third_party.txt.sha256sum)
hash_new=$(sha256sum third_party.txt)
if [ "${hash_old}" != "${hash_new}" ]; then
echo "检测到third_party.txt有变化更新第三方组件..."
git submodule update --init --recursive
if [ $? -ne 0 ]; then
echo "无法更新第三方组件,请更新镜像..."
else
echo "第三方组件安装成功..."
sha256sum third_party.txt > /tmp/third_party.txt.sha256sum
fi
fi
fi
fi
# 系统软件包更新
if [ "${NASTOOL_VERSION}" != "lite" ]; then
hash_old=$(cat /tmp/package_list.txt.sha256sum)
hash_new=$(sha256sum package_list.txt)
if [ "${hash_old}" != "${hash_new}" ]; then
echo "检测到package_list.txt有变化更新软件包..."
if [ "${NASTOOL_CN_UPDATE}" = "true" ]; then
sed -i "s/dl-cdn.alpinelinux.org/${ALPINE_MIRROR}/g" /etc/apk/repositories
apk update -f
fi
apk add --no-cache libffi-dev
apk add --no-cache $(echo $(cat package_list.txt))
if [ $? -ne 0 ]; then
echo "无法更新软件包,请更新镜像..."
else
apk del libffi-dev
echo "软件包安装成功..."
sha256sum package_list.txt > /tmp/package_list.txt.sha256sum
fi
fi
fi
else
echo "更新失败,继续使用旧的程序来启动..."
fi
else
echo "程序自动升级已关闭如需自动升级请在创建容器时设置环境变量NASTOOL_AUTO_UPDATE=true"
fi
echo "以PUID=${PUID}PGID=${PGID}的身份启动程序..."
if [ "${NASTOOL_VERSION}" = "lite" ]; then
mkdir -p /.pm2
chown -R "${PUID}":"${PGID}" "${WORKDIR}" /config /.pm2
else
mkdir -p /.local
mkdir -p /.pm2
chown -R "${PUID}":"${PGID}" "${WORKDIR}" /config /usr/lib/chromium /.local /.pm2
export PATH=${PATH}:/usr/lib/chromium
fi
umask "${UMASK}"
exec su-exec "${PUID}":"${PGID}" "$(which dumb-init)" "$(which pm2-runtime)" start run.py -n NAStool --interpreter python3