Upgrading Omeka S 3.1.1. to 4.0.1 running on docker

I’m attempting to upgrade Omeka S 3.1.1 running on a docker image (giocomai/omeka-s-docker:v3.1.1) to 4.0.1. However when I fire up the new 4.0.1 image I get a ton of errors due to the modules not being compatible. Is there a recommended way to go about upgrading Omeka S to avoid these issues?

Errors in what sense? Like the messages on the Modules page saying the modules aren’t compatible?

If that’s it, you just need to also update the modules.

I don’t know specifically with Docker as we don’t have ours setup that way. We do use Git… when I upgraded to 4.0.1 almost all the modules threw an error. None said “Needs Upgrade or Upgrade Available”. I had to manually check each one here (Omeka S - Modules ) to see which ones were compatible with 4.0.1. Tip: It would be helpful if this page Omeka S - Modules showed the latest compatible version for each module so one did not have to click each module to find it’s compatible version.

Note that you can’t use Easy Admin or Easy Install to install these modules either, as if you already have the module installed it wont let you install a different version. For example, I had File Sideload 1.4.0, but wanted to upgrade to File Sideload 1.7.0 (which is listed in Easy Install, or Easy Admin). But you get an error: “This module is already installed” . I tried deactivating the module before trying Easy Install, but that doesnt work either. I suppose I could have uninstalled it, after backing up, but in the end I used the command line and wget and downloaded and unzipped in the modules folder.

When you factor in having to keep a backup copy of all the old modules “just in case”, it was a lot of work.

The issue seems to have been that I did not notice that the files, config, themes and module directories are all symbolic. I was trying to mount my volumes to the symbolic directory and of course that was not working, hence causing the issue. So the issue wasn’t necessarily with the upgrade, but how I was mounting the volumes.
So instead of mounting the volumes to /var/www/files, I had to mount them to /var/www/volume/files.