scripts/migrate-docker

59 lines
1.5 KiB
Text
Raw Normal View History

2023-04-23 10:04:53 +02:00
#!/bin/bash
set -e
# shellcheck disable=SC1091
. /etc/weblate-bootstrap
# Set path to include script directory
PATH="$(dirname "$(readlink -f "$0")"):$PATH"
export PATH
WEBLATE_USERNAME=weblate
USERNAME=weblate
WEBLATE_HOME=$(getent passwd "$USERNAME" | cut -d: -f 6)
WEBLATE_ENV="$WEBLATE_HOME/weblate-env"
# Stop services, wait for empty queue
systemctl stop uwsgi
while sudo -u "$WEBLATE_USERNAME" "$WEBLATE_ENV/bin/weblate" celery_queues | grep ': [^0]' ; do
sleep 1
done
systemctl stop celery-weblate
systemctl stop redis
# Prepare Docker environment
install-weblate-docker --migrate
# Dump PostgreSQL and load it to Docker
# shellcheck disable=SC2024
sudo -u "postgres" pg_dump --no-privileges --no-owner --clean --if-exists weblate > "$WEBLATE_HOME/weblate.sql"
docker compose up -d database --wait
docker compose exec -T database psql --username weblate --dbname postgres < "$WEBLATE_HOME/weblate.sql"
# Move redis data
cp /var/lib/redis/dump.rdb "$WEBLATE_HOME/redis"
chown 999:1000 "$WEBLATE_HOME/redis"
# Filesystem data is already in correct place
# Cleanup system packages
apt-get purge \
redis-server \
uwsgi \
postgresql \
# Start Weblate
sudo -u weblate docker compose up -d --wait
# Show logs
sudo -u weblate docker compose logs
# Track deploy to Sentry
if [ -n "$WEBLATE_SENTRY_TOKEN" ] ; then
sudo -u weblate docker compose exec --user weblate weblate weblate sentry_deploy
fi
# Check
sudo -u weblate docker compose exec --user weblate weblate weblate check --deploy