Estoy trabajando en un proyecto Lucy. Que es un sistema de gestión académica. Y tengo que activarlo contra Moodle en principio y luego contra Microsoft Teams. Para probar Moodle, necesito tenerlo levantado en un entorno de producción. ¿Se puede integrarlo en Sails?
Sí, podemos hacerlo de las dos formas:
- A) Integrarlo al stack de Sail con un
docker-compose.override.yml. Es práctico para un entorno de pruebas único (Laravel + DB + Moodle en la misma red). - B) Correr Moodle en un compose aparte. Es más limpio si querés aislar servicios, reiniciar/actualizar Moodle sin tocar tu app o usar otra DB/volúmenes.
Para “probar contra él” localmente, A suele ser suficiente. Abajo te dejo un override listo con Moodle (Bitnami) usando el MySQL del stack Sail.
Opción A — Agregar Moodle al proyecto Sail (recomendado para pruebas locales)
Crea docker-compose.override.yml en la raíz del proyecto Laravel:
services:
# Moodle (servidor web + PHP en un solo contenedor)
moodle:
image: bitnami/moodle:latest
depends_on:
- mysql # o "mariadb" si ese es tu servicio DB en Sail
environment:
# Datos del admin de Moodle
MOODLE_USERNAME: admin
MOODLE_PASSWORD: admin123
MOODLE_EMAIL: [email protected]
# Conexión a la base (apunta al servicio DB de Sail)
MOODLE_DATABASE_TYPE: mysqli # o "pgsql" si usás Postgres
MOODLE_DATABASE_HOST: ${DB_HOST:-mysql}
MOODLE_DATABASE_PORT_NUMBER: ${FORWARD_DB_PORT:-3306}
MOODLE_DATABASE_USER: ${DB_USERNAME:-sail}
MOODLE_DATABASE_PASSWORD: ${DB_PASSWORD:-password}
MOODLE_DATABASE_NAME: moodle # DB nueva para Moodle
# Opcionales útiles
PHP_MEMORY_LIMIT: 512M
PHP_UPLOAD_MAX_FILESIZE: 64M
PHP_POST_MAX_SIZE: 64M
# MOODLE_SITE_NAME: "Moodle local"
# MOODLE_PASSWORD_POLICY: "false"
ports:
- "${FORWARD_MOODLE_PORT:-8083}:8080" # http://localhost:8083
volumes:
- moodle_app:/bitnami/moodle
- moodle_data:/bitnami/moodledata
networks:
- sail
volumes:
moodle_app:
moodle_data:
networks:
sail:
external: true
name: ${APP_SERVICE:-sail}
Antes de levantar, asegurate de crear la base
moodleen tu MySQL de Sail (o defineDB_USERNAMEcon permisos para crearla). Si preferís que Moodle la cree, dale permisos de creación al usuario.
Levantar:
./vendor/bin/sail up -d
Abrí http://localhost:8083 (admin/admin123 según lo configurado arriba).
Tu Laravel puede “probar contra Moodle” vía HTTP (APIs/rest, OAuth2, LTI, etc.). Si necesitás que Moodle haga callbacks a Laravel, usa APP_URL y el puerto expuesto de tu app.
Notas
- Si usás Postgres en Sail, cambia:
depends_on: [pgsql]MOODLE_DATABASE_TYPE: pgsqlMOODLE_DATABASE_PORT_NUMBER: 5432MOODLE_DATABASE_HOST: pgsql
- Moodle requiere un cron. El contenedor Bitnami trae cron integrado. Si querés forzarlo:
MOODLE_ENABLE_CRON: "yes"(ya suele venir activo). Alternativa: programar uncurlal cron.php con un contenedor sidecar.
Opción B — Moodle en un compose separado (más aislamiento)
En otra carpeta:
services:
moodle:
image: bitnami/moodle:latest
environment:
MOODLE_USERNAME: admin
MOODLE_PASSWORD: admin123
MOODLE_EMAIL: [email protected]
MOODLE_DATABASE_TYPE: mysqli
MOODLE_DATABASE_HOST: db
MOODLE_DATABASE_PORT_NUMBER: 3306
MOODLE_DATABASE_USER: moodle
MOODLE_DATABASE_PASSWORD: moodlepass
MOODLE_DATABASE_NAME: moodle
ports:
- "8083:8080"
volumes:
- moodle_app:/bitnami/moodle
- moodle_data:/bitnami/moodledata
depends_on:
- db
db:
image: mysql:8
environment:
MYSQL_DATABASE: moodle
MYSQL_USER: moodle
MYSQL_PASSWORD: moodlepass
MYSQL_ROOT_PASSWORD: rootpass
volumes:
- db_data:/var/lib/mysql
volumes:
moodle_app:
moodle_data:
db_data:
Luego docker compose up -d. Tu app Laravel puede hablar con Moodle vía http://localhost:8083.
¿Cuál conviene?
- Integrado (override): setup más rápido; todo en una sola red; ideal para pruebas de integración locales.
- Separado: reinicios y upgrades de Moodle sin afectar Sail; mejor si querés probar múltiples versiones de Moodle o DB diferente.


Dejá una respuesta