Moodle - Docker - New ideas

Moodle - Docker - New ideas

by Sammuel Cavalcante Cavalcante -
Number of replies: 1

Hi, I'm an apprentice about moodle and docker.

I am disclosing the settings I used on the docker.

The moodle is running ok. But there may be something else that I’m forgetting.

ideas are welcome

***************************1º PASSO**************************************
docker volume create moodle-man-vol
docker volume create moodle-man-arch

***************************2º PASSO******************************************
docker run -d \
--name moodle-man-db \
-p 1001:3306 \
--mount src=moodle-man-vol,dst=/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD="moodle_password" \
-e MYSQL_DATABASE="moodle" \
-e MYSQL_USER="moodle_user" \
-e MYSQL_PASSWORD="moodle_pass" \
mysql:5.7.30

***************************3º PASSO - Criar Dockerfile*******************************************

#cria a imagem de PHP com apache
FROM php:7.4-apache

RUN apt-get update \
&& apt-get install -y wget unzip

RUN docker-php-ext-install -j$(nproc) mysqli

RUN set -eux; apt-get update; apt-get install -y libzip-dev

#descarrega  instala as librarias
RUN apt-get update \
  && apt-get install -f -y --no-install-recommends \
  rsync \
  netcat \
  curl \
  libicu-dev \
  libmemcached-dev \
  libz-dev \
  libpq-dev \
  libjpeg-dev \
  libfreetype6-dev \
  libmcrypt-dev \
  libbz2-dev \
  libjpeg62-turbo-dev \
  gnupg \
  libldap2-dev \
  libpng-dev \
  libxslt-dev \
  unixodbc-dev \
  uuid-dev \
  ghostscript \
  libaio1 \
  libgss3 \
  libicu63 \
  libxslt1.1 \
  locales \
  sassc \
  unixodbc \
  unzip \
  zip \
  libmemcached11 \
  libldap-2.4-2 

#instalação de extensões de php para que funcione corretamente
RUN docker-php-ext-configure soap --enable-soap \
&& docker-php-ext-configure bcmath --enable-bcmath \
&& docker-php-ext-configure pcntl --enable-pcntl \
&& docker-php-ext-configure zip \
&& docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \
&& docker-php-ext-install -j$(nproc) zip opcache pgsql intl soap xmlrpc bcmath pcntl sockets ldap 

RUN docker-php-ext-configure gd \
    --with-freetype=/usr/include/ \
    --with-jpeg=/usr/include/ \
    --enable-gd

RUN docker-php-ext-install gd

RUN pecl install apcu igbinary memcached mongodb redis uuid xmlrpc-beta \
&& docker-php-ext-enable apcu igbinary memcached mongodb redis uuid xmlrpc

RUN apt-get autopurge -y \
    && apt-get autoremove -y \
    && apt-get autoclean \
   
RUN apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*

WORKDIR /var/www/html

#decarrega a versão do moodle e descomprime
RUN wget https://download.moodle.org/download.php/direct/stable310/moodle-latest-310.tgz \
&& tar -zxvf moodle-latest-310.tgz \
&& chmod 0755 /var/www/html -R

#Dar permissões de usuário a pasta
RUN chown www-data.www-data /var/www/html -R

# Cria a pasta do arquivo moodledata e dá permissões
RUN mkdir /var/www/moodledata && \ 
chmod 0770 /var/www/moodledata -R

#dá permissões de usuario a pasta moodle data
RUN chown www-data /var/www/moodledata -R

EXPOSE 80
  
  
  
***************************4º PASSO - Criar imagem*******************************************
docker build -t moodle-pmac:1.0 .




**************5º PASSO - Criar Container da Aplicação e associar à imagem************************
docker run -d \
--name moodle-man-app \
-p 9090:80 \
--mount src=moodle-man-arch,dst=/var/www/moodledata \
-e MOODLE_DATABASE_NAME="moodle" \
-e MOODLE_DATABASE_USER="moodle_user" \
-e MOODLE_DATABASE_PASSSWORD="moodle_pass" \
-e MOODLE_DATABASE_HOST="moodle-man-db" \
moodle-pmac:1.0

*******************************6º PASSO - Criar conexões*****************************************
docker network create --attachable moodle-network
docker network connect moodle-network moode-man-db
docker network connect moodle-network moodle-man-app
docker restart moodle-man-app
docker restart moodle-man-db
*****************************9º Passo - Configurar o Cron***************************************
O cron.php é o script que roda todas as tarefas essencias para o bom funcionamento do moodle.

apt-get update
apt-get cron
cd /etc
nano crontab


#adicione a seguinte linha em crontab
*/1 * * * * root php -q -f /var/www/html/moodle/admin/cli/cron.php > /var/log/moodle_cron.log

#reinicie o serviço cron
/etc/init.d/cron restart

Average of ratings: -
In reply to Sammuel Cavalcante Cavalcante

Re: Moodle - Docker - New ideas

by Howard Miller -
Picture of Core developers Picture of Documentation writers Picture of Particularly helpful Moodlers Picture of Peer reviewers Picture of Plugin developers
Kind of putting Docker to one side.... what you are really writing is an installation script for Moodle. That's a personal thing. If you asked 10 administrators then you'd get 10 different answers.

I'm not a Docker user but isn't the point to create an easily reproducible custom environment?

So... if it works for you, then great.