scripts/migrate-docker

70 lines
1.8 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
2023-04-23 13:41:34 +02:00
# Use same variables as in other scripts even though these are not configurable here
2023-04-23 10:04:53 +02:00
WEBLATE_USERNAME=weblate
USERNAME=weblate
WEBLATE_HOME=$(getent passwd "$USERNAME" | cut -d: -f 6)
WEBLATE_ENV="$WEBLATE_HOME/weblate-env"
2023-04-23 13:41:34 +02:00
WEBLATE_DOCKER="$WEBLATE_HOME/weblate"
2023-04-23 10:04:53 +02:00
2023-04-23 10:21:21 +02:00
# Install docker
install-docker
2023-04-23 10:04:53 +02:00
# Stop services, wait for empty queue
systemctl stop uwsgi
2025-04-08 11:35:17 +02:00
while sudo -u "$WEBLATE_USERNAME" "$WEBLATE_ENV/bin/weblate" celery_queues | grep ': [^0]'; do
2025-07-16 15:11:55 +02:00
sleep 1
2023-04-23 10:04:53 +02:00
done
systemctl stop celery-weblate
2023-05-15 08:58:00 +02:00
systemctl disable celery-weblate
2023-04-23 10:04:53 +02:00
systemctl stop redis
# Prepare Docker environment
2023-04-24 12:40:33 +02:00
install-weblate-docker "$@" --migrate
2023-04-23 10:04:53 +02:00
# Dump PostgreSQL and load it to Docker
# shellcheck disable=SC2024
2025-07-16 15:11:55 +02:00
sudo -u "postgres" pg_dump --no-privileges --no-owner --clean --if-exists weblate > "$WEBLATE_HOME/weblate.sql"
systemctl stop postgresql
2023-04-23 13:41:34 +02:00
cd "$WEBLATE_DOCKER"
2023-04-23 10:04:53 +02:00
docker compose up -d database --wait
2023-04-23 17:06:20 +02:00
sleep 60
2025-07-16 15:11:55 +02:00
docker compose exec -T database psql --username weblate --dbname weblate < "$WEBLATE_HOME/weblate.sql"
2023-04-23 10:04:53 +02:00
# Move redis data
cp /var/lib/redis/dump.rdb "$WEBLATE_HOME/redis"
2023-04-23 19:28:15 +02:00
chown -R 999:1000 "$WEBLATE_HOME/redis"
2023-04-23 10:04:53 +02:00
# Filesystem data is already in correct place
2023-04-23 19:28:15 +02:00
chown -R 1000:1000 "$WEBLATE_HOME/data"
2023-04-23 10:04:53 +02:00
# Cleanup system packages
2023-04-29 09:29:26 +02:00
apt-get purge -y \
2025-07-16 15:11:55 +02:00
redis-server \
uwsgi \
postgresql
2023-04-23 10:04:53 +02:00
# Start Weblate
sudo -u weblate docker compose up -d --wait
2023-04-23 10:04:53 +02:00
# Show logs
sudo -u weblate docker compose logs
# Track deploy to Sentry
2025-04-08 11:35:17 +02:00
if [ -n "$WEBLATE_SENTRY_TOKEN" ]; then
2025-07-16 15:11:55 +02:00
sudo -u weblate docker compose exec --user weblate weblate weblate sentry_deploy
2023-04-23 10:04:53 +02:00
fi
# Check
sudo -u weblate docker compose exec --user weblate weblate weblate check --deploy