Sign inSign up

cimdev/moodle

By cimdev

•Updated over 1 year ago

Moodle for easy deployment and testing

Image
0

214

cimdev/moodle repository overview

⁠Moodle Docker Image

⁠Moodle Docker (Apache – Multi-Architecture)

cimdev php APACHE

A lightweight, production-ready Docker image for deploying Moodle with Apache.
Supports multi-architecture builds (amd64, arm64), ideal for both cloud and edge environments.


⁠🚀 Features

  • ✅ Fully containerized Moodle
  • 🧩 Apache preconfigured
  • 🔄 Multi-arch support (linux/amd64, linux/arm64)
  • ⚙️ PHP pre-installed and optimized
  • 📦 Easy to extend and configure with environment variables

⁠🐳 Quick Start

⁠Features

  • PHP with Apache
  • Complete multi-language support
  • Optimized Moodle configuration
  • Reverse proxy support
  • Integrated SMTP configuration
  • Customizable environment variables

⁠Requirements

  • Docker
  • Docker Compose

⁠Quick Start

  1. Create a docker-compose.yml file:
mkdir moodle-docker
cd moodle-docker
  1. Create the docker-compose.yml file with the following content:

services:
  moodle:
    image: cimdev/moodle:latest
    ports:
      - "8080:80"
    environment:
      # Required Variables
      - MOODLE_DB_TYPE=mariadb
      - MOODLE_DB_HOST=mariadb
      - MOODLE_DB_NAME=moodle
      - MOODLE_DB_USER=moodle
      - MOODLE_DB_PASS=moodle
      - MOODLE_URL=http://localhost:8080
      - MOODLE_DATA=/var/www/moodledata
    volumes:
      - moodledata:/var/www/moodledata
    depends_on:
      - mariadb

  mariadb:
    image: mariadb:10.11
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=moodle
      - MYSQL_USER=moodle
      - MYSQL_PASSWORD=moodle
    volumes:
      - mariadb_data:/var/lib/mysql

volumes:
  moodledata:
  mariadb_data:
  1. Start the containers:
docker-compose up -d
  1. Access Moodle at http://localhost:8080
⁠Option 2: Using Docker Run

If you prefer to use docker run instead of Docker Compose, here's an example:

  1. First, create a network for the containers:
docker network create moodle-network
  1. Start MariaDB:
docker run -d \
  --name mariadb \
  --network moodle-network \
  -e MYSQL_ROOT_PASSWORD=root \
  -e MYSQL_DATABASE=moodle \
  -e MYSQL_USER=moodle \
  -e MYSQL_PASSWORD=moodle \
  -v mariadb_data:/var/lib/mysql \
  mariadb:10.11
  1. Start Moodle:
docker run -d \
  --name moodle \
  --network moodle-network \
  -p 8080:80 \
  -e MOODLE_DB_TYPE=mariadb \
  -e MOODLE_DB_HOST=mariadb \
  -e MOODLE_DB_NAME=moodle \
  -e MOODLE_DB_USER=moodle \
  -e MOODLE_DB_PASS=moodle \
  -e MOODLE_URL=http://localhost:8080 \
  -e MOODLE_DATA=/var/www/moodledata \
  -v moodledata:/var/www/moodledata \
  --link mariadb \
  cimdev/moodle:latest
  1. Access Moodle at http://localhost:8080
⁠Option 3: Building from Source
  1. Build and start the containers:
docker-compose up -d
  1. Access Moodle at http://localhost:8080

⁠Configuration

⁠Environment Variables
⁠Required Variables

These variables must be set for Moodle to function properly:

VariableDescriptionExample
MOODLE_DB_TYPEDatabase typemariadb
MOODLE_DB_HOSTDatabase hostmariadb
MOODLE_DB_NAMEDatabase namemoodle
MOODLE_DB_USERDatabase usermoodle
MOODLE_DB_PASSDatabase passwordmoodle
MOODLE_URLYour Moodle site URLhttp://localhost:8080⁠
MOODLE_DATAMoodle data directory/var/www/moodledata
⁠Optional Variables

These variables have default values but can be customized:

⁠SMTP Configuration
VariableDescriptionDefault Value
SMTP_HOSTSMTP server hostlocalhost
SMTP_PORTSMTP server port587
SMTP_USERSMTP username(empty)
SMTP_PASSWORDSMTP password(empty)
SMTP_PROTOCOLSMTP protocoltls
MOODLE_MAIL_NOREPLY_ADDRESSNo-reply email addressnoreply@localhost
⁠Reverse Proxy Configuration
VariableDescriptionDefault Value
MOODLE_REVERSEPROXYEnable reverse proxyfalse
MOODLE_SSLPROXYEnable SSL proxyfalse
⁠PHP Configuration
VariableDescriptionDefault Value
PHP_MAX_INPUT_VARSMaximum input variables5000
PHP_MAX_EXECUTION_TIMEMaximum execution time300
PHP_MAX_INPUT_TIMEMaximum input time300
PHP_MEMORY_LIMITMemory limit256M
PHP_POST_MAX_SIZEMaximum POST size64M
PHP_UPLOAD_MAX_FILESIZEMaximum upload file size64M
PHP_MAX_FILE_UPLOADSMaximum file uploads20
PHP_DISPLAY_ERRORSDisplay errorsOff
PHP_LOG_ERRORSLog errorsOn
PHP_ERROR_LOGError log path/var/log/php_errors.log
PHP_DATE_TIMEZONEDefault timezoneUTC
⁠PHP OPcache Configuration
VariableDescriptionDefault Value
PHP_OPCACHE_ENABLEEnable OPcache1
PHP_OPCACHE_MEMORY_CONSUMPTIONOPcache memory consumption128
PHP_OPCACHE_INTERNED_STRINGS_BUFFERInterned strings buffer8
PHP_OPCACHE_MAX_ACCELERATED_FILESMaximum accelerated files4000
PHP_OPCACHE_REVALIDATE_FREQRevalidation frequency60
PHP_OPCACHE_FAST_SHUTDOWNFast shutdown1
PHP_OPCACHE_ENABLE_CLIEnable CLI1
⁠Example docker-compose.yml

services:
  moodle:
    image: cimdev/moodle:latest
    ports:
      - "8080:80"
    environment:
      # Required Variables
      - MOODLE_DB_TYPE=mariadb
      - MOODLE_DB_HOST=mariadb
      - MOODLE_DB_NAME=moodle
      - MOODLE_DB_USER=moodle
      - MOODLE_DB_PASS=moodle
      - MOODLE_URL=http://localhost:8080
      - MOODLE_DATA=/var/www/moodledata
      
      # Optional SMTP Configuration
      - SMTP_HOST=smtp.gmail.com
      - SMTP_PORT=587
      - [email protected]
      - SMTP_PASSWORD=your_password
      - SMTP_PROTOCOL=tls
      - MOODLE_MAIL_NOREPLY_ADDRESS=noreply@localhost
      
      # Optional Reverse Proxy Configuration
      - MOODLE_REVERSEPROXY=false
      - MOODLE_SSLPROXY=false
      
      # Optional PHP Configuration
      - PHP_MAX_INPUT_VARS=5000
      - PHP_MAX_EXECUTION_TIME=300
      - PHP_MAX_INPUT_TIME=300
      - PHP_MEMORY_LIMIT=256M
      - PHP_POST_MAX_SIZE=64M
      - PHP_UPLOAD_MAX_FILESIZE=64M
      - PHP_MAX_FILE_UPLOADS=20
      - PHP_DISPLAY_ERRORS=Off
      - PHP_LOG_ERRORS=On
      - PHP_ERROR_LOG=/var/log/php_errors.log
      - PHP_DATE_TIMEZONE=UTC
      
      # Optional OPcache Configuration
      - PHP_OPCACHE_ENABLE=1
      - PHP_OPCACHE_MEMORY_CONSUMPTION=128
      - PHP_OPCACHE_INTERNED_STRINGS_BUFFER=8
      - PHP_OPCACHE_MAX_ACCELERATED_FILES=4000
      - PHP_OPCACHE_REVALIDATE_FREQ=60
      - PHP_OPCACHE_FAST_SHUTDOWN=1
      - PHP_OPCACHE_ENABLE_CLI=1
    volumes:
      - moodledata:/var/www/moodledata
    depends_on:
      - mariadb

  mariadb:
    image: mariadb:10.11
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=moodle
      - MYSQL_USER=moodle
      - MYSQL_PASSWORD=moodle
    volumes:
      - mariadb_data:/var/lib/mysql

volumes:
  moodledata:
  mariadb_data:
⁠Volumes
  • moodledata: Stores Moodle data
  • mariadb_data: Stores database data

⁠Advanced Configuration

⁠Reverse Proxy

To enable reverse proxy support, set the following variables:

MOODLE_REVERSEPROXY=true
MOODLE_SSLPROXY=true  # If using SSL
⁠Language Configuration

The image includes support for multiple languages:

  • English (en_AU.UTF-8)
  • Spanish (es_ES.UTF-8)
  • French (fr_FR.UTF-8)
  • German (de_DE.UTF-8)
  • Italian (it_IT.UTF-8)
  • Portuguese (pt_BR.UTF-8)
  • Russian (ru_RU.UTF-8)
  • Chinese (zh_CN.UTF-8)
  • Japanese (ja_JP.UTF-8)
  • Korean (ko_KR.UTF-8)
  • Arabic (ar_SA.UTF-8)

Tag summary

Content type

Image

Digest

sha256:ccf800c06…

Size

258.1 MB

Last updated

over 1 year ago

docker pull cimdev/moodle:moodle-5.0-php8.2-apache