ABS Technology LMS powered by Moodleโข
10K+
Get your Moodle LMS running in under 2 minutes!
curl -sSL https://raw.githubusercontent.com/abs-technology/moodle/moodle-core-5-2-1-plus/docker-compose.yml > docker-compose.yml
curl -sSL https://raw.githubusercontent.com/abs-technology/moodle/moodle-core-5-2-1-plus/env.example > .env
mkdir -p data/moodle data/moodledata
chown -R 1000:1000 data/moodle data/moodledata
docker compose up -d
The World's Open Source Learning Platform
โ ๐ฏ What is Moodle?Moodleโ is the world's most trusted open-source learning management system, empowering educators worldwide to create effective online learning experiences. ๐ Global Impact:
|
โ ๐ Key FeaturesLearning Modes:
Built For:
|
| Resource | Description | Link |
|---|---|---|
| ๐ User Guide | Complete documentation for educators | docs.moodle.orgโ |
| ๐ ๏ธ Developer Docs | Technical documentation & APIs | moodledev.ioโ |
| ๐งช Live Demo | Try Moodle without installation | sandbox.moodledemo.netโ |
| ๐ฅ Community | Join global educators network | moodle.orgโ |
| ๐ช Events | Moodle conferences worldwide | Moodle Mootsโ |
| ๐ค Association | Official user association | moodleassociation.orgโ |
License: GNU General Public License v3.0โ
โ ๐ Enterprise-GradeLatest Technology Stack
|
โ ๐ฏ Production-ReadyBuilt for High-Traffic
|
โ ๐ผ Professional SupportโExpert Assistance
|
โ โก Speed Optimizations
|
โ ๐ Scalability Features
|
๐ฏ Built for high-traffic educational environments
โ ๐ซ Universities
|
โ ๐ Schools
|
โ ๐ข Corporations
|
โ ๐ Organizations
|
Dockerfile LinksSubscribe to project updates by watching the ABS Technology Moodle GitHub repoโ .
"Deployed across 200+ universities and schools globally, serving 500,000+ students daily"
Perfect for:
The recommended way to get the ABS Technology Moodle Docker Image is to pull the prebuilt image from the Docker Hub Registry.
$ docker pull abstechnology/moodle-standard:latest
To use a specific version, you can pull a versioned tag:
$ docker pull abstechnology/moodle-standard:5.2.1-plus
The main folder of this repository contains a functional docker-compose.ymlโ file. Run the application using it as shown below:
$ curl -sSL https://raw.githubusercontent.com/abs-technology/moodle/moodle-core-5-2-1-plus/docker-compose.yml > docker-compose.yml
$ curl -sSL https://raw.githubusercontent.com/abs-technology/moodle/moodle-core-5-2-1-plus/env.example > .env
$ docker-compose up -d
If you want to run the application manually instead of using docker-compose, these are the basic steps you need to run:
$ docker network create moodle-network
$ docker volume create --name mariadb_data
$ docker run -d --name mariadb \
--env MARIADB_ROOT_PASSWORD=root_password \
--env MARIADB_USER=moodle_user \
--env MARIADB_PASSWORD=moodle_password \
--env MARIADB_DATABASE=moodle_db \
--network moodle-network \
--volume mariadb_data:/var/lib/mysql \
mariadb:11.7.2
$ docker volume create --name moodle_data
$ docker volume create --name moodledata_data
$ docker run -d --name moodle \
-p 8080:8080 \
-p 8443:8443 \
--env MOODLE_DATABASE_HOST=mariadb \
--env MOODLE_DATABASE_USER=moodle_user \
--env MOODLE_DATABASE_PASSWORD=moodle_password \
--env MOODLE_DATABASE_NAME=moodle_db \
--env MOODLE_USERNAME=admin \
--env MOODLE_PASSWORD=admin_password \
--env [email protected] \
--network moodle-network \
--volume moodle_data:/var/www/html \
--volume moodledata_data:/var/www/moodledata \
abstechnology/moodle-standard:5.2.1-plus
Access your application at http://localhost:8080 or https://localhost:8443.
When you start the Moodle image, you can adjust the configuration of the instance by passing one or more environment variables either on the docker-compose file or on the docker run command line.
MOODLE_USERNAME: Moodle admin username. Default: absi_adminMOODLE_PASSWORD: Moodle admin password. RequiredMOODLE_EMAIL: Moodle admin email. RequiredMOODLE_SITE_NAME: Moodle site name. Default: Absi Technology Moodle LMSยฎMOODLE_SITE_FULLNAME: Moodle site full name. Default: Absi Technology Learning Management SystemMOODLE_SITE_SHORTNAME: Moodle site short name. Default: ABSI-LMSMOODLE_CRON_MINUTES: Moodle cron job interval in minutes. Default: 1MOODLE_REVERSEPROXY: Enable reverse proxy support. Default: yesMOODLE_SSLPROXY: Enable SSL proxy support. Default: yesMOODLE_DATABASE_TYPE: Database type. Default: mariadbMOODLE_DATABASE_HOST: Hostname for database server. Default: mariadbMOODLE_DATABASE_PORT_NUMBER: Port used by database server. Default: 3306MOODLE_DATABASE_NAME: Database name for Moodle. Default: absi_moodle_dbMOODLE_DATABASE_USER: Database user for Moodle. Default: absi_moodle_userMOODLE_DATABASE_PASSWORD: Database password for Moodle. RequiredPHP_MEMORY_LIMIT: PHP memory limit. Default: 512MPHP_MAX_INPUT_VARS: PHP max input variables. Default: 5000PHP_MAX_FILE_UPLOADS: PHP max file uploads. Default: 200PHP_POST_MAX_SIZE: PHP POST max size. Default: 2GPHP_UPLOAD_MAX_FILESIZE: PHP upload max filesize. Default: 2GPHP_MAX_EXECUTION_TIME: PHP max execution time. Default: 256services:
mariadb:
image: mariadb:11.7.2
container_name: abs-mariadb
environment:
- MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
- MARIADB_USER=${MARIADB_USER}
- MARIADB_PASSWORD=${MARIADB_PASSWORD}
- MARIADB_DATABASE=${MARIADB_DATABASE}
command:
- '--character-set-server=utf8mb4'
- '--collation-server=utf8mb4_unicode_ci'
- '--init-connect=SET NAMES utf8mb4'
volumes:
- mariadb_data:/var/lib/mysql
healthcheck:
test: ["CMD", "mariadb-admin", "ping", "-h", "localhost", "-u", "root", "-p${MARIADB_ROOT_PASSWORD}"]
interval: 10s
timeout: 5s
retries: 5
networks:
- moodle_network
moodle:
image: abstechnology/moodle-standard:5.2.1-plus
container_name: abs-moodle
ports:
- "80:8080"
- "443:8443"
environment:
# Moodle Admin Configuration
- MOODLE_USERNAME=${MOODLE_USERNAME}
- MOODLE_PASSWORD=${MOODLE_PASSWORD}
- MOODLE_EMAIL=${MOODLE_EMAIL}
# Moodle Site Configuration
- MOODLE_SITE_NAME=${MOODLE_SITE_NAME}
- MOODLE_SITE_FULLNAME=${MOODLE_SITE_FULLNAME}
- MOODLE_SITE_SHORTNAME=${MOODLE_SITE_SHORTNAME}
- MOODLE_CRON_MINUTES=${MOODLE_CRON_MINUTES}
# Database Configuration
- MOODLE_DATABASE_TYPE=${MOODLE_DATABASE_TYPE}
- MOODLE_DATABASE_HOST=${MOODLE_DATABASE_HOST}
- MOODLE_DATABASE_PORT_NUMBER=${MOODLE_DATABASE_PORT_NUMBER}
- MOODLE_DATABASE_USER=${MARIADB_USER}
- MOODLE_DATABASE_PASSWORD=${MARIADB_PASSWORD}
- MOODLE_DATABASE_NAME=${MARIADB_DATABASE}
# PHP Configuration Limits
- PHP_MEMORY_LIMIT=${PHP_MEMORY_LIMIT}
- PHP_MAX_INPUT_VARS=${PHP_MAX_INPUT_VARS}
- PHP_MAX_FILE_UPLOADS=${PHP_MAX_FILE_UPLOADS}
- PHP_POST_MAX_SIZE=${PHP_POST_MAX_SIZE}
- PHP_UPLOAD_MAX_FILESIZE=${PHP_UPLOAD_MAX_FILESIZE}
- PHP_MAX_EXECUTION_TIME=${PHP_MAX_EXECUTION_TIME}
# MariaDB Connection Configuration
- MARIADB_HOST=${MOODLE_DATABASE_HOST}
- MARIADB_PORT_NUMBER=${MOODLE_DATABASE_PORT_NUMBER}
- MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
- MARIADB_PASSWORD=${MARIADB_PASSWORD}
# Proxy Configuration
- MOODLE_REVERSEPROXY=${MOODLE_REVERSEPROXY}
- MOODLE_SSLPROXY=${MOODLE_SSLPROXY}
# Upgrade behavior (see env.example for details)
- MOODLE_AUTO_DB_UPGRADE=${MOODLE_AUTO_DB_UPGRADE:-no}
- MOODLE_BACKUP_DIR=${MOODLE_BACKUP_DIR:-/var/www/moodle-backups}
- MOODLE_UPGRADE_RETENTION=${MOODLE_UPGRADE_RETENTION:-5}
volumes:
- ./data/moodle:/var/www/html
- ./data/moodledata:/var/www/moodledata
- ./data/moodle-backups:/var/www/moodle-backups
depends_on:
mariadb:
condition: service_healthy
healthcheck:
test: ["CMD", "sh", "-c", "if [ \"$$MOODLE_SSLPROXY\" = \"yes\" ]; then curl -f -k https://localhost:8443/login/index.php; else curl -f http://localhost:8080/login/index.php; fi"]
interval: 30s
timeout: 10s
retries: 5
start_period: 60s
networks:
- moodle_network
networks:
moodle_network:
driver: bridge
volumes:
mariadb_data:
| Feature | Specification | Benefit |
|---|---|---|
| ๐ PHP Version | 8.4 with OPcache | 40% faster than PHP 7.4 |
| ๐๏ธ Database | MariaDB 11.7.2 | High-performance, MySQL-compatible |
| ๐ File Uploads | Up to 2GB per file | Support large video/document uploads |
| ๐ Cron Jobs | Configurable (1-60 min) | Automated maintenance & notifications |
This image runs as a non-root user (absiuser) for enhanced security. All services are configured to run with minimal privileges.
The image includes SSL support with self-signed certificates for development. For production, mount your own certificates:
$ docker run -d --name moodle \
-v /path/to/your/cert.pem:/etc/ssl/certs/server.crt \
-v /path/to/your/key.pem:/etc/ssl/private/server.key \
abstechnology/moodle-standard:latest
Always use strong passwords for database and admin accounts. You can generate secure passwords using:
$ openssl rand -base64 32
To backup your data, we recommend backing up both the database and the Moodle data directory:
# Backup database
$ docker exec mariadb mysqldump -u root -p[ROOT_PASSWORD] [DATABASE_NAME] > backup.sql
# Backup Moodle data
$ docker run --rm --volumes-from moodle -v $(pwd):/backup alpine tar czf /backup/moodledata-backup.tar.gz /var/www/moodledata
# Restore database
$ docker exec -i mariadb mysql -u root -p[ROOT_PASSWORD] [DATABASE_NAME] < backup.sql
# Restore Moodle data
$ docker run --rm --volumes-from moodle -v $(pwd):/backup alpine tar xzf /backup/moodledata-backup.tar.gz -C /
We welcome contributions to improve this Docker image. Please submit issues and enhancement requests, and feel free to submit pull requests.
This Docker setup is licensed under the MIT License. Moodle itself is licensed under the GNU General Public License v3+.
Global LMS Solutions Provider & Education Technology Leader
๐ Official Google Cloud Partner | ๐ Education Technology Specialist | ๐ Award-Winning Support
Celebrating 8 years as one of the top-selling LMS powered by Moodleโข - empowering global education with innovative, reliable solutions
Content type
Image
Digest
sha256:6d97fe76cโฆ
Size
254.1 MB
Last updated
16 days ago
docker pull abstechnology/moodle-standard