Giter VIP home page Giter VIP logo

chrmorais / docker-compose-moodle Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jobcespedes/docker-compose-moodle

0.0 1.0 0.0 64.22 MB

docker-compose-moodle quickly builds a local workspace for Moodle (Apache2, PHP-FPM with XDEBUG y Postgres) using containers for each of its main components. The local workspace is build and manage by Docker Compose

License: Apache License 2.0

Dockerfile 80.65% Shell 19.35%

docker-compose-moodle's Introduction

docker-compose-moodle

Moodle Apache2 PHP Postgres Software License

Leer en Español

docker-compose-moodle quickly builds a local workspace for Moodle (Apache2, PHP-FPM with XDEBUG y Postgres) using containers for each of its main components. The local workspace is build and manage by Docker Compose

Quickstart:

  1. Docker installed. Check out how to install Docker in Ubuntu
  2. Docker Compose installed. Check out how to install Docker Compose in Ubuntu
  3. Download this repo: git clone https://github.com/jobcespedes/docker-compose-moodle.git && cd docker-compose-moodle
  4. Clone Moodle repo: git clone -b MOODLE_35_STABLE https://github.com/moodle/moodle.git html
  5. Deploy with: docker-compose up -d

Docker Compose structure

The following table sums up Docker Compose file structure:

Component Type Responsability Content Config
apache2 Container Servicio web Debian8, Apache2 Minimum apache 2 modules for web server
cron Container Cron task for Moodle Debian8, Cron Moodle cron task frequency
db_dumps Volume Restore db when built Dump files for DB to restore To restore a initial database when build using the dump file called dump-init.sql.gz
moodledata Volume Moodle data store Data generated by moodle
php-fpm Container Process manager for PHP Debian8, PHP-FPM, XDEBUG PHP modules and Moodle dependencies
postgres Container DBMS Debian8, Postgres User and DB
REPO_FOLDER Volume Moodle code PHP Moodle code It is set to './html' by deafult (check out .env)

Environment variables

The following table describes environment variables in .env:

Variable Default value Use
REPO_FOLDER html Default relative path for Moodle repo
DOCUMENT_ROOT /var/www/html Mount point inside containers for volume REPO_FOLDER
MY_TZ America/Costa_Rica Containers timezone
PG_LOCALE es_CR Containers locale
PG_PORT 5432 Postregres port to expose
POSTGRES_DB moodle Postgres DB for Moodle
POSTGRES_USER user DB user for Moodle
POSTGRES_PASSWORD password DB password for Moodle
PHP_SOCKET 9000 PHP-FPM socket to connect apache2 and php-fpm services
ALIAS_DOMAIN localhost domain alias
WWW_PORT 80 Web port to be bound
MOODLE_DATA /var/moodledata Mount point inside containers for Moodle data folder
WWWROOT localhost Host part to set in Moodle file 'config.php' for config option 'wwwroot'

Project (workspace) management with Docker Compose

Inside project folder

  1. Stop project
docker-compose stop
# docker-compose stop <service>
  1. Start project
docker-compose start
# docker-compose start <service>
  1. Run project
docker-compose up -d
# Different project name
# docker-compose -p my-proj up -d
  1. Remove project
docker-compose down
# Remove volumes too
# docker-compose --volumes
# With different project name:
# docker-compose -p my-proj down
  1. Logs
docker-compose logs
#docker-compose logs <service>
  1. Useful Docker commands
# List containers
docker ps
# List images
docker images
# Enter a container
 docker exec -it <container_name> bash
# Check container log
docker logs <container_name> -f
# Remove dangling images
docker rmi $(docker images -f "dangling=true" -q)

Notes

Restore a specific database when postgres service starts

A database can be automatically restored when postgres service starts. By placing a dump file inside 'db_dumps' folder and naming it "dump-init.sql.gz", postgres container will try to restore that file as initial database.

IMPORTANT: Depending of dump-init.sql.gz size, database initial availability could be delayed

XDEBUG

Use idekey PHPTEST

PHPStorm

Debug config for IDE PHPStorm:

  1. Add server:
    • Settings -> Languages -> PHP -> Servers
  2. Add PHP remote debug
    • Run / Debug Configurations -> PHP remote debug
    • Use server created in step #1 and set idekey PHPTEST
  3. Enable Start listening for PHP Debug Connections

Pgadmin4

Config pgadmin4

  1. Go to http://localhost:5050
  2. In File -> Preferences -> Binary paths set usr/bin
  3. Add new server:
    • Tab General
      • Name: Any name you want
    • Tab Connection
      • Host name/address: postgres
      • Host Username: user
      • Host Password: password
    • Save

Install Docker

Ubuntu 16

Instructions from Docker Docs

sudo apt-get update

# Extra packages
sudo apt-get install -y curl \
    linux-image-extra-$(uname -r) \
    linux-image-extra-virtual

# Source config
sudo apt-get install -y apt-transport-https \
                       software-properties-common \
                       ca-certificates

## Official Docker GPG key
curl -fsSL https://yum.dockerproject.org/gpg | sudo apt-key add -

# Validate key 58118E89F3A912897C070ADBF76221572C52609D
$(apt-key fingerprint 58118E89F3A912897C070ADBF76221572C526091 | wc -l | grep -qv 0) && echo Valid || echo "Validation error"

## Add source
sudo apt-get install -y software-properties-common
sudo add-apt-repository -y \
       "deb https://apt.dockerproject.org/repo/ \
       ubuntu-$(lsb_release -cs) \
       main"

## Install docker
sudo apt-get update
sudo apt-get -y install docker-engine

## Group and user
sudo groupadd docker
sudo usermod -aG docker $USER

# Check install
sudo docker run hello-world

Install Docker Compose

As a container

Based on Docker-compose Docs

curl -L https://github.com/docker/compose/releases/download/1.10.0/run.sh > /tmp/docker-compose
chmod +x /tmp/docker-compose
sudo mv /tmp/docker-compose /usr/local/bin/docker-compose

Español

docker-compose-moodle es un repositorio para crear rápidamente un entorno de trabajo con Moodle (Apache2, PHP-FPM con XDEBUG y Postgres) usando contenedores para cada uno sus principales componentes. El entorno de trabajo se crea y gestiona con Docker Compose.

Pasos rápidos para crear proyecto:

  1. Tener Docker. Ver como instalar Docker en Ubuntu
  2. Tener Docker Compose. Ver como instalar Docker Compose como contenedor
  3. Descargar este repo y acceder a él: git clone https://github.com/jobcespedes/docker-compose-moodle.git && cd docker-compose-moodle
  4. Copiar repositorio de código de Moodle: git clone -b MOODLE_35_STABLE https://github.com/moodle/moodle.git html
  5. Desplegar con: docker-compose up -d

Estructura de Docker Compose

A continuación se incluye una tabla que resume la estructura del archivo de Docker Compose:

Componente Tipo Responsabilidad Contenido Configuración
apache2 Contenedor Servicio web Debian8, Apache2 El mínimo de módulos de apache y el servidor web
cron Contenedor Tarea de cron de Moodle Debian8, Cron Frecuencia de ejecución de tarea cron de Moodle
db_dumps Volumen Restaurar una base de datos inicial Archivos de respaldo de base de datos. Para restaurar al iniciar, nombre el archivo sql de respaldo como dump-init.sql.gz
moodledata Volumen Almacen de datos de moodle Archivos generados por Moodle
php-fpm Contenedor Interprete y manejador de procesos para PHP Debian8, PHP-FPM, XDEBUG Modulos de php y paquetes adicionales para Moodle
postgres Contenedor Gestor de base de datos Debian8, Postgres Usuario y base de datos
REPO_FOLDER Volumen Código de aplicación Código de Moodle Por defecto es './html' (ver archivo .env)

Variables de ambiente

La siguiente tabla contiene las variables utilizadas en el archivo .env para docker compose:

Variable Valor por defecto Utilidad
REPO_FOLDER html Ruta relativa para el código de Moodle
DOCUMENT_ROOT /var/www/html Punto de montaje para REPO_FOLDER dentro de contenedores
MY_TZ America/Costa_Rica Zona horaria para los contenedores
PG_LOCALE es_CR Configuración de lugar
PG_PORT 5432 Puerto de base de datos postgres a publicar
POSTGRES_DB moodle Nombre de la base de datos postgres de Moodle
POSTGRES_USER user Nombre de usuario de la base de datos postgres de Moodle
POSTGRES_PASSWORD password Contraseña de la base de datos postgres de Moodle
PHP_SOCKET 9000 Socket para conectar apache2 con php-fpm
ALIAS_DOMAIN localhost alias de dominio
WWW_PORT 80 Puerto web a publicar
MOODLE_DATA /var/moodledata Carpeta de datos de Moodle a montar en los contenedores
WWWROOT localhost Para de nombre de host en la url de config.php de Moodle

Gestión del entorno con Docker Compose

Dentro de la carpeta del proyecto

  1. Detener el proyecto
docker-compose stop
# docker-compose stop <servicio>
  1. Iniciar el proyecto
docker-compose start
# docker-compose start <servicio>
  1. Correr proyecto
docker-compose up -d
# Nombrar el proyecto diferente a la carpeta:
# docker-compose -p mi-proy up -d
  1. Eliminar proyecto
docker-compose down
# Eliminar los volumenes también:
# docker-compose --volumes
# Eliminar con un nombre de proyecto especifico:
# docker-compose -p mi-proy down
  1. Logs
docker-compose logs
#docker-compose logs <servicio>
  1. Algunos comandos útiles de Docker
# Ver contenedores
docker ps
# Ver imágenes
docker images
# Ingresar a un contenedores
 docker exec -it <nombre_contenedor> bash
# Ver logs de un contenedor
docker logs <nombre_contenedor> -f
# Eliminar imágenes huérfanas
docker rmi $(docker images -f "dangling=true" -q)

Notas

Restaurar una base de datos al inicio

Se puede restaurar una base de datos, agregando el script sql generador (comprimido como gzip) a la caperta db_dumps y nombrando el archivo como dump-init.sql.gz

IMPORTANTE: Dependiendo del tamaño, la ejecución de este sql podría demorar la disponibilidad inicial de la base de datos.

XDEBUG

Se utiliza el idekey PHPTEST

PHPStorm

Configuración para depurar con IDE PHPStorm:

  1. Agregar servidor:
    • Settings -> Languages -> PHP -> Servers
  2. Agregar PHP remote debug
    • Run / Debug Configurations -> PHP remote debug
    • Utilizar servidor previamente agregado y establecer como idekey el valor PHPTEST
  3. Activar botón Start listening for PHP Debug Connections

Pgadmin4

Pasos para usar pgadmin4

  1. Ingresar a http://localhost:5050
  2. En File -> Preferences -> Binary paths establecer en usr/bin
  3. Agregar nuevo servidor:
    • Pestaña General
      • Name: Un nombre para el servidor
    • Pestaña Connection
      • Host name/address: postgres
      • Host Username: metics
      • Host Password: devpass
    • Guardar

Instalar Docker

Ubuntu 16

A partir de instrucciones en la documentación de Docker

sudo apt-get update

# Paquetes extra
sudo apt-get install -y curl \
    linux-image-extra-$(uname -r) \
    linux-image-extra-virtual

#Configurar el repositorio
sudo apt-get install -y apt-transport-https \
                       software-properties-common \
                       ca-certificates

# Agregar llave oficial GPG de docker
curl -fsSL https://yum.dockerproject.org/gpg | sudo apt-key add -

# Validar que llave sea 58118E89F3A912897C070ADBF76221572C52609D
$(apt-key fingerprint 58118E89F3A912897C070ADBF76221572C526091 | wc -l | grep -qv 0) && echo Verificado || echo "Error de verificacion"

# Instalar repositorio estable
sudo apt-get install -y software-properties-common
sudo add-apt-repository -y \
       "deb https://apt.dockerproject.org/repo/ \
       ubuntu-$(lsb_release -cs) \
       main"

# Instalar docker
sudo apt-get update
sudo apt-get -y install docker-engine

# Usuarios y grupos
sudo groupadd docker
sudo usermod -aG docker $USER

# Verificar la instalación
sudo docker run hello-world

Instalar Docker Compose

Como contenedor

Basado en la doc de Docker-compose

curl -L https://github.com/docker/compose/releases/download/1.10.0/run.sh > /tmp/docker-compose
chmod +x /tmp/docker-compose
sudo mv /tmp/docker-compose /usr/local/bin/docker-compose

docker-compose-moodle's People

Contributors

jobcespedes avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.