Skip to content

Updating

The Updating process depends on your chosen method of installation

While intermediate updates can be skipped when updating please make sure to read the release notes in case some special action is required to update.

Docker

For all setups using Docker the updating process look something like this

  1. Before updating it is recommended to create a backup!
  2. Stop the container using docker compose down
  3. Pull the latest image using docker compose pull
  4. Start the container again using docker compose up -d

Manual

For all setups using a manual installation updates usually involve downloading the latest source code from GitHub. After that make sure to run:

  1. pip install -r requirements.txt
  2. manage.py collectstatic
  3. manage.py migrate
  4. cd ./vue
  5. yarn install
  6. yarn build

To install latest libraries, apply all new migrations and collect new static files.

PostgreSQL

Postgres does not automatically upgrade database files when you change versions and requires manual intervention. One option is to manually backup/restore the database.

A full list of options to upgrade a database provide in the official PostgreSQL documentation.

  1. Collect information about your environment.
grep -E 'POSTGRES|DATABASE' ~/.docker/compose/.env
docker ps -a --format 'table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Status}}' | awk 'NR == 1 || /postgres/ || /recipes/'
  1. Export the tandoor database
docker exec -t {{database_container}} pg_dumpall -U {{djangouser}} > ~/tandoor.sql
  1. Stop the tandoor application

    docker compose down
    

  2. Rename the tandoor volume

mv ./postgresql ./postgresql.old
  1. Update image tag on postgres container in the docker-compose.yaml
db_recipes:
  restart: always
  image: postgres:16-alpine
  volumes:
    - ./postgresql:/var/lib/postgresql/data
  env_file:
    - ./.env
  1. Pull and rebuild database container
docker compose pull && docker compose up -d db_recipes
  1. Import the database export
cat ~/tandoor.sql | docker exec -i {{database_container}} psql postgres -U {{djangouser}}
  1. Install postgres extensions
    docker exec -it {{database_container}} psql postgres -U {{djangouser}}
    
    then
    CREATE EXTENSION IF NOT EXISTS unaccent;
    CREATE EXTENSION IF NOT EXISTS pg_trgm;
    

If anything fails, go back to the old postgres version and data directory and try again.

There are many articles and tools online that might provide a good starting point to help you upgrade 1, 2, 3.