Upgrade Moodle Docker
I found out that upgrading moodle (running in a Docker container) is not as simple as doing docker pull image.
It requires some more steps, that are properly referenced in the Moodle’s documentation – version 4.4
Backing up Docker volumes
As always, backup everything before doing any kind of updates.
Start by stopping the relevant Docker containers
docker stop moodle mariadbThen, back up the Moodle volume (change according to your setup)
docker run --rm -v ~/moodle-bak:/backups --volumes-from moodle busybox cp -a /bitnami/moodle /backups/latest
A quick commands explanation
- docker run: Launches a new Docker container.
- –rm: Automatically removes the container after completion of the task.
- -v ~/moodle-bak:/backups: Mounts the host directory
~/moodle-bakinto the container at/backups, allowing file storage on your host. - –volumes-from moodle: Grants the new container access to the volumes of the existing
moodlecontainer. - busybox: Uses the lightweight BusyBox image, ideal for simple tasks.
- cp -a /bitnami/moodle /backups/latest: Copies the entire
/bitnami/moodledirectory (preserving file attributes) into/backups/lateston the container, which maps to~/moodle-bak/lateston your host.
Upgrading Moodle
As per documented, upgrading to the latest moodle version requires the following steps.
Backup the existing Moodle folder
Rename or move your current Moodle folder to a backup location (e.g.,moodle-bak).Download and Extract the latest Moodle package
Obtain the latestmoodle.tgzfile from the official Moodle sources and extract it.Restore critical files
Copy essential configuration and custom files from your backup into the new Moodle directory:cp moodle-bak/config.php moodle cp -pr moodle.backup/theme/mytheme moodle/theme/mytheme cp -pr moodle.backup/mod/mymod moodle/mod/mymodSet ownership and permissions
Update the file ownership and permissions as recommended:chown -R root:root moodle chmod -R 755 moodleOn Debian Linux, you might consider creating a dedicated user for Moodle rather than using the web server user (e.g.,
www-data).Update Docker configuration
In your newdocker-composefile, replace the Docker volume with a bind mount that points to your Moodle directory on the host. This creates a persistent volume for the upgraded installation.Restart your containers
Finally, start your Docker Compose setup to bring up the upgraded Moodle instance.