Moodle setup for Docker, build on Alpine Linux. The image is only +/- 70MB large.
Repository: https://github.com/erseco/alpine-moodle
docker logs -f <container name>
)Start the Docker containers:
docker-compose up
Login on the system using the provided credentials (ENV vars)
In certain situations, you might need to run commands as root
within your Moodle container, for example, to install additional packages. You can do this using the docker-compose exec
command with the --user root
option. Here's how:
docker-compose exec --user root moodle sh
Define the ENV variables in docker-compose.yml file
Variable Name | Default | Description |
---|---|---|
LANG | en_US.UTF-8 | |
LANGUAGE | en_US:en | |
SITE_URL | http://localhost | Sets the public site url |
REVERSEPROXY | false | Enable when setting up advanced reverse proxy |
SSLPROXY | false | Disable SSL proxy to avoid site loop. Ej. Cloudfare |
REDIS_HOST | Set the host of the redis instance. Ej. redis | |
DB_TYPE | pgsql | mysqli - pgsql - mariadb |
DB_HOST | postgres | DB_HOST Ej. db container name |
DB_PORT | 5432 | Postgres=5432 - MySQL=3306 |
DB_NAME | moodle | |
DB_USER | moodle | |
DB_FETCHBUFFERSIZE | Set to 0 if using PostgresSQL poolers like PgBouncer in 'transaction' mode | |
DB_DBHANDLEOPTIONS | false | Set to true if using PostgresSQL poolers like PgBouncer which does not support sending options |
DB_HOST_REPLICA | Database hostname of the read-only replica database | |
DB_PORT_REPLICA | Database port of replica, left it empty to be same as DB_PORT | |
DB_USER_REPLICA | Database login username of replica, left it empty to be same as DB_USER | |
DB_PASS_REPLICA | Database login password of replica, left it empty to be same as DB_PASS | |
DB_PREFIX | mdl_ | Database prefix. WARNING: don't use numeric values or moodle won't start |
MY_CERTIFICATES | none | Trusted LDAP certificate or chain getting through base64 encode |
MOODLE_EMAIL | user@example.com | |
MOODLE_LANGUAGE | en | |
MOODLE_SITENAME | New-Site | |
MOODLE_USERNAME | moodleuser | |
MOODLE_PASSWORD | PLEASE_CHANGEME | |
SMTP_HOST | smtp.gmail.com | |
SMTP_PORT | 587 | |
SMTP_USER | your_email@gmail.com | |
SMTP_PASSWORD | your_password | |
SMTP_PROTOCOL | tls | |
MOODLE_MAIL_NOREPLY_ADDRESS | noreply@localhost | |
MOODLE_MAIL_PREFIX | [moodle] | |
AUTO_UPDATE_MOODLE | true | Set to false to disable performing update of Moodle (e.g. plugins) at docker start |
DEBUG | false | |
client_max_body_size | 50M | |
post_max_size | 50M | |
upload_max_filesize | 50M | |
max_input_vars | 5000 | |
PRE_CONFIGURE_COMMANDS | Commands to run before starting the configuration | |
POST_CONFIGURE_COMMANDS | Commands to run after finished the configuration |
You can define commands to be executed before and after the configuration of Moodle using the PRE_CONFIGURE_COMMANDS
and POST_CONFIGURE_COMMANDS
environment variables. These can be useful for tasks such as installing additional packages or running scripts.
Example docker-compose.yml
configuration:
version: '3'
services:
moodle:
image: erseco/alpine-moodle
environment:
SITE_URL: "http://localhost"
DB_TYPE: "pgsql"
DB_HOST: "postgres"
DB_PORT: 5432
DB_NAME: "moodle"
DB_USER: "moodle"
MOODLE_USERNAME: "admin"
MOODLE_PASSWORD: "admin"
PRE_CONFIGURE_COMMANDS: "echo 'Running pre-configure commands'"
POST_CONFIGURE_COMMANDS: "echo 'Running post-configure commands'"
You can also install Moodle plugins directly from a URL using the install_plugin.php
script. This can be useful for automating plugin installations during container setup.
Example command:
php admin/cli/install_plugin.php --url=https://github.com/mohessaid/moodle_local_plugin/archive/refs/heads/master.zip --run
This command will download and install the specified plugin into your Moodle instance.