Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/erseco/alpine-moodle
Moodle docker image based on Alpine Linux
https://github.com/erseco/alpine-moodle
alpine docker hacktoberfest hacktoberfest2023 lightweight lms moodle nginx php7
Last synced: about 7 hours ago
JSON representation
Moodle docker image based on Alpine Linux
- Host: GitHub
- URL: https://github.com/erseco/alpine-moodle
- Owner: erseco
- License: mit
- Created: 2020-04-29T17:02:22.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-11-16T20:58:26.000Z (2 days ago)
- Last Synced: 2024-11-16T21:27:49.644Z (2 days ago)
- Topics: alpine, docker, hacktoberfest, hacktoberfest2023, lightweight, lms, moodle, nginx, php7
- Language: Shell
- Homepage: https://hub.docker.com/r/erseco/alpine-moodle
- Size: 136 KB
- Stars: 44
- Watchers: 7
- Forks: 34
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Moodle on Alpine Linux
[![Docker Pulls](https://img.shields.io/docker/pulls/erseco/alpine-moodle.svg)](https://hub.docker.com/r/erseco/alpine-moodle/)
![Docker Image Size](https://img.shields.io/docker/image-size/erseco/alpine-moodle)
![nginx 1.26](https://img.shields.io/badge/nginx-1.26-brightgreen.svg)
![php 8.3](https://img.shields.io/badge/php-8.3-brightgreen.svg)
![moodle-4.4.0](https://img.shields.io/badge/moodle-4.4-yellow)
![License MIT](https://img.shields.io/badge/license-MIT-blue.svg)Moodle setup for Docker, build on [Alpine Linux](http://www.alpinelinux.org/).
The image is only +/- 70MB large.Repository: https://github.com/erseco/alpine-moodle
* Built on the lightweight image https://github.com/erseco/alpine-php-webserver
* Very small Docker image size (+/-70MB)
* Uses PHP 8.3 for better performance, lower cpu usage & memory footprint
* Support for HA installations: php-redis, php-ldap (also with self-signed certs)
* Multi-arch support: 386, amd64, arm/v6, arm/v7, arm64, ppc64le, s390x
* Optimized for 100 concurrent users
* Optimized to only use resources when there's traffic (by using PHP-FPM's ondemand PM)
* Use of runit instead of supervisord to reduce memory footprint
* Configured cron to run as non-privileged user https://github.com/gliderlabs/docker-alpine/issues/381#issuecomment-621946699
* docker-compose sample with PostgreSQL and Redis
* Configuration via ENV variables
* Easily upgradable to new moodle versions
* The servers Nginx, PHP-FPM run under a non-privileged user (nobody) to make it more secure
* The logs of all the services are redirected to the output of the Docker container (visible with `docker logs -f `)
* Follows the KISS principle (Keep It Simple, Stupid) to make it easy to understand and adjust the image to your needs## Usage
Start the Docker containers:
docker-compose up
Login on the system using the provided credentials (ENV vars)
## Running Commands as Root
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:
```bash
docker-compose exec --user root moodle sh
```## Configuration
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 | [email protected] | |
| MOODLE_LANGUAGE | en | |
| MOODLE_SITENAME | New-Site | |
| MOODLE_USERNAME | moodleuser | |
| MOODLE_PASSWORD | PLEASE_CHANGEME | |
| SMTP_HOST | smtp.gmail.com | |
| SMTP_PORT | 587 | |
| SMTP_USER | [email protected] | |
| 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 |## Pre and Post Configuration Commands
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:
```yaml
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'"
```### Installing Plugins from URL
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:
```sh
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.
```