Created Sat May, 02 2020 at 06:10AM

I was upgrading my docker-compose (using nextcloud:fpm image) setup from 16 to 18. I don’t know/remember why I am using fpm tag or what it even means. I probably followed some guide. This might therefore not be directly applicable to others. But I made this write-up hoping that it provides clues to making someone else’s life easier.

 My docker-compose.yml
  1. ssh to the server
  2. Make backup of NC (NextCloud) data:
sudo rsync -a ~/nextcloud ~/nextcloud.BAK
  1. Turn on maintenance mode:
docker exec -u www-data nextcloud_fpm php occ maintenance:mode --on
  1. Change in docker-compose.yml: from
  app:
    image: nextcloud:fpm

to

  app:
    image: nextcloud:17-fpm

I got the tag 17-fpm searching from here 2.

  1. Update the docker images:
docker-compose down
docker-compose pull
docker-compose up -d
  1. Check that the version is correct (17 in my case):
docker exec -u www-data nextcloud_fpm php occ status
  1. Upgrade NC:
docker exec -u www-data nextcloud_fpm php occ upgrade
  1. Repeat steps 4-7 for each intermediary major version of NC. And then one more time for the latest version (18 in my case) but in step 4 I change it back to nextcloud:fpm (the latest version).
  2. Turn off maintenance mode:
docker exec -u www-data nextcloud_fpm php occ maintenance:mode --off

when you want to go into maintenance mode

docker exec --user www-data nextcloud php occ maintenance:mode --on
docker exec nextcloud-db mysql --user=root --password=$MY_MYSQL_ROOT_PASSWORD -D nextcloud -e 'delete from oc_file_locks where 1'
docker exec --user www-data nextcloud php occ maintenance:mode --off