Hi,
I made it easier to Update NodeBB in Docker Container for peaople who Build themself.
Nodebb has to be in Folder nodebb, otherwise it wont find the installation.
#!/bin/bash
nodebb_path="/root"
nodebb_compose="docker-compose-orgi.yml"
plugins_ol="nodebb-plugin-embed nodebb-plugin-math-captcha nodebb-plugin-embed nodebb-plugin-emoji-android nodebb-plugin-google-analytics nodebb-plugin-sso-google nodebb-plugin-tenor-gif nodebb-plugin-sso-github"
if [ ! -f "$nodebb_compose" ]; then
echo "Compose does not exist, aborting"
exit 1
fi
if [ ! -d "$nodebb_path/nodebb" ]; then
echo "Path not exist, aborting"
exit 1
fi
# Backup current Data
if [ -d "$nodebb_path/nodebb-backup" ]; then
echo "nodebb-backup exist"
read -p "Delete old backup? (Y/N): " confirm
if [[ $confirm == [Yy] ]]; then
echo "Deleting backup"
rm -rf $nodebb_path/nodebb-backup
else
echo "Do not Update without current backup"
exit 1
fi
fi
echo "Backup NodeBB Folder"
cp -r "$nodebb_path/nodebb/" "$nodebb_path/nodebb-backup"
echo "Backup NodeBB Image"
docker save nodebb-nodebb:latest | gzip > "$nodebb_path/nodebb-backup/nodebb-nodebb_latest.tar.gz"
echo -e "\nFetch NodeBB Repository\n"
git fetch
echo -e "\nReset NodeBB Base\n"
git reset --hard origin/v4.x
echo -e "\nChange NodeBB User and Group\n"
chown -R 1001:1001 .docker public
echo -e "\nModify Dockerfile with Plugins\n"
if [[ $(grep -c "npm install" Dockerfile) -lt 2 ]]; then
sed -i "/EXPOSE 4567/a RUN npm install $plugins_ol" Dockerfile
fi
#echo "NPM Install count $(grep -c "npm install" Dockerfile)"
echo -e "\nBuilding NodeBB Image\n"
docker compose -f $nodebb_compose build
echo -e "\nDeploy NodeBB Image\n"
docker compose -f $nodebb_compose up -d
counter=0
while [ $(docker logs nodebb-nodebb-1 | grep -c "NodeBB is now listening") -lt 1 ]; do
docker logs --tail 20 nodebb-nodebb-1
sleep 10
counter=$((counter+1))
if [[ "$counter" -ge "30" ]]; then
echo -e "\nNodeBB not Coming up, please investigate\n"
exit 1
fi
done
docker logs --tail 20 nodebb-nodebb-1
echo -e "\nChecking Plugins\n"
docker exec -i nodebb-nodebb-1 npm list | grep nodebb > /tmp/nodebb-plugins.txt
for i in $plugins_ol; do
if [[ $(grep -c $i /tmp/nodebb-plugins.txt) == 1 ]]; then
echo "Plugin Installed $i"
else
echo "Plugin Not Installed $i"
fi
done
Greetings



